VBA - Boucle recherche de données et alimentation d'un tableau
Bonjour,
Je cherche comme l'indique le sujet, à récupérer des données d'un autre classeur que je copierai vers un autre classeur, toutefois je cherche à ajouter une nouvelle ligne en fonction de différents noms de postes (c'est ici que doit intervenir la boucle que je ne maîtrise absolument pas pour le moment).
Le classeur ETAT_Budget_General est une extraction PDF du logiciel que je transforme ensuite en Excel, c'est à partir de ce classeur que je souhaite retrouver mes données. Sachant que les instances sont menés à changer au court de l'année.
Le but serait de remplir mon tableau déjà existant MacroProjet_Etat_Budget_General à partir de ces données cependant il y a différentes contraintes à prendre en compte que j'explique directement sur le fichier Excel pour être plus explicite.
De plus, serait-il possible d'expliquer directement certaines lignes de code les plus fastidieuses dans le VBE pour que je puisse comprendre le déroulement ?
Mes compétences sont entrain de s'améliorer mais je suis encore loin d'être autonome alors un petit coup de pouce serait vraiment la bien venue =)
Si vous avez des questions n'hésitez surtout pas !
Voici mon code pour le moment, or il s'avère que ça ne fonctionne pas :/
Sub table1_loop_recherche()
Dim WB1 As Workbook
Dim WB2 As Workbook
Dim WST1 As Worksheet
Dim Cell As Range
Set WB1 = Workbooks("ETAT_Budget_General.xlsx")
Set WB2 = Workbooks("Analyse_Etat_Budget_General.xlsx")
Set WST1 = Worksheets("Table 1")
For Each Cell In WB1.WST1.Range("A4:A10")
If Cell.Value = "COM" Then
Range("A4:K4").Select
Selection.Copy
WB2.Activate
Rows("4:4").Select
Selection.Insert Shift:=xlDown
End If
Next Cell
MsgBox "Toutes les valeurs ont été ajoutées au tableau."
End Sub
Avec de la persévérance j'y suis arrivé, du moins pas totalement. Voici la suite, la boucle fonctionne, et j'arrive ainsi à ajouter le reste des formules pour compléter mon tableau. Toutefois, j'ai un petit soucis. j'aimerai que lorsque la boucle rentre en action, que les données reprises apparaissent dans le même ordre que dans le tableau Etat_Budget_General
Sub table1_loop_recherche()
'Workbooks("ETAT_Budget_General.xlsx")
'Worksheets("Table 1")
For Each Cell In Workbooks("ETAT_Budget_General.xlsx").Worksheets("Table 1").Range("A4:A100")
If Cell.Value = "COM" Then
Cell.EntireRow.Copy
Windows("Analyse _Etat_Budget_General.xlsm").Activate
Sheets("Table 1").Select
Rows("4:4").Select
With Selection
.Insert Shift:=xlDown
End With
Else: Exit For
End If
'Formule 1
Range("G4").Select
ActiveCell.FormulaR1C1 = "=(RC[-1]/RC[-2])"
With Selection
.Style = "Percent"
.NumberFormat = "0.00%"
End With
'Formule 2
Range("I4").Select
ActiveCell.FormulaR1C1 = "=(RC[-1]/RC[-4])"
Range("I4").Select
With Selection
.Style = "Percent"
.NumberFormat = "0.00%"
End With
'Formule 3
Range("J4").Select
ActiveCell.FormulaR1C1 = "=RC[-5]-RC[-4]-RC[-2]"
'Formule 4
Range("K4").Select
ActiveCell.FormulaR1C1 = "=RC[-1]/RC[-6]"
Range("K4").Select
With Selection
.Style = "Percent"
.NumberFormat = "0.00%"
End With
'Formule 5
Range("M4").Select
ActiveCell.FormulaR1C1 = "=Menu!R[8]C[-5]-('Table 1'!RC[-6]+'Table 1'!RC[-4])"
'Formule 6
Range("N4").Select
ActiveCell.FormulaR1C1 = "=RC[-9]*RC[-1]"
Range("N4").Select
With Selection
.NumberFormat = "0.00"
End With
'Formule 7
Range("Q4").Select
ActiveCell.FormulaR1C1 = "=RC[-12]-RC[-2]+RC[-1]"
'Formule 8
Range("R4").Select
ActiveCell.FormulaR1C1 = _
"=IF(ISBLANK(RC[-1]),""AUTO"",(RC[-1]-RC[-13])/RC[-13])"
Range("R4").Select
Selection.Style = "Percent"
With Selection
.NumberFormat = "0.00%"
End With
Next Cell
MsgBox "The update is successful !"
End Sub