VBA - Boucle recherche de données et alimentation d'un tableau

Y compris Power BI, Power Query et toute autre question en lien avec Excel
K
Kevin34db
Jeune membre
Jeune membre
Messages : 12
Inscrit le : 21 septembre 2017
Version d'Excel : 2016

Message par Kevin34db » 20 février 2018, 14:20

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 !
MacroProjet_Etat_Budget_General.xlsm
(66.29 Kio) Téléchargé 17 fois
ETAT_Budget_General.xlsx
(18.71 Kio) Téléchargé 21 fois
K
Kevin34db
Jeune membre
Jeune membre
Messages : 12
Inscrit le : 21 septembre 2017
Version d'Excel : 2016

Message par Kevin34db » 22 février 2018, 09:59

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
Modifié en dernier par Kevin34db le 23 février 2018, 09:13, modifié 1 fois.
K
Kevin34db
Jeune membre
Jeune membre
Messages : 12
Inscrit le : 21 septembre 2017
Version d'Excel : 2016

Message par Kevin34db » 26 février 2018, 10:19

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
ETAT_Budget_General.xlsx
(36.36 Kio) Téléchargé 12 fois
Analyse _Etat_Budget_General.xlsm
(94.13 Kio) Téléchargé 12 fois


Sujet remonté par Kevin34db le 26 février 2018, 10:19.
Répondre Sujet précédentSujet suivant
  • Sujets similaires
    Réponses
    Vues
    Dernier message