Bonjour.
Débutant en VBA, j'ai essayé de bricoler une fonction boucle avec des bouts de codes du forum, mais ça s'est conclu par un échec retentissant.
Voici le problème :
J'ai une page source : Export ARC
et une page de résultat : synthèse
Dans ma page "Export ARC", j'ai X sociétés sur X lignes avec des chiffres sur plusieurs colonnes (un tableau quoi...)
Je veux créer, sur la page "synthèse", X tableaux de synthèse reprenant les données qui m'intéressent pour chaque société.
J'ai trouvé un code pour copier les données sur le tableau.
J'ai trouvé le code pour copier le tableau de synthèse en bas de la feuille "synthèse".
J'ai inséré le tout dans une boucle For. et le résultat ne rime à rien. ça me créé un nombre insuffisant de tableaux de synthèse et la copie des données ne fonctionne que pour la première société.
Quelqu'un pourrait-il m'aider à corriger mon code ?
Sub creation_tableau()
Application.ScreenUpdating = False
'Supprime la fusion des cellule dans l'onglet "export ARC".
Sheets("export ARC").Activate
Range("A1:HA200").Select
Selection.MergeCells = False
For i = 20 To Range("A65536").End(xlUp).Row
With Worksheets("Synthèse")
.[A6].Value = Cells(i, "A").Value
.[D6].FormulaR1C1 = _
"=MID('Export ARC'!R2C21,SEARCH(""§"",SUBSTITUTE('Export ARC'!R2C21,"" "",""§"",LEN('Export ARC'!R2C21)-LEN(SUBSTITUTE('Export ARC'!R2C21,"" "",""""))-1))+1,99)"
.[B8].Value = Cells(i, "AU").Value
.[D8].Value = Cells(i, "BB").Value
.[B9].Value = Cells(i, "AT").Value
.[D9].Value = Cells(i, "AZ").Value
.[B10].Value = Cells(i, "BD").Value
.[D10].Value = Cells(i, "BM").Value
.[B11].Value = Cells(i, "BQ").Value
.[D11].Value = Cells(i, "BW").Value
.[B12].Value = Cells(i, "BX").Value
.[D12].Value = Cells(i, "CB").Value
.[B13].Value = Cells(i, "AM").Value
.[D13].Value = Cells(i, "AS").Value
End With
'Duplique le tableau vers le bas.
Sheets("Synthèse").Select
Rows("6:13").Select
Selection.Copy
Range("A6").Select
Do Until IsEmpty(ActiveCell) = True
ActiveCell.Offset(15, 0).Activate
Loop
ActiveSheet.Paste
'Ré-initialise le tableau modèle.
Range("A66,B8:C15").Select
Selection.ClearContents
Range("A6").Select
ActiveCell.FormulaR1C1 = "MODELE NE PAS TOUCHER"
Range("a1").Select
Next i
Sheets("Synthèse").Activate
Application.ScreenUpdating = True
End Sub
Débutant en VBA, j'ai essayé de bricoler une fonction boucle avec des bouts de codes du forum, mais ça s'est conclu par un échec retentissant.
Voici le problème :
J'ai une page source : Export ARC
et une page de résultat : synthèse
Dans ma page "Export ARC", j'ai X sociétés sur X lignes avec des chiffres sur plusieurs colonnes (un tableau quoi...)
Je veux créer, sur la page "synthèse", X tableaux de synthèse reprenant les données qui m'intéressent pour chaque société.
J'ai trouvé un code pour copier les données sur le tableau.
J'ai trouvé le code pour copier le tableau de synthèse en bas de la feuille "synthèse".
J'ai inséré le tout dans une boucle For. et le résultat ne rime à rien. ça me créé un nombre insuffisant de tableaux de synthèse et la copie des données ne fonctionne que pour la première société.
Quelqu'un pourrait-il m'aider à corriger mon code ?
Sub creation_tableau()
Application.ScreenUpdating = False
'Supprime la fusion des cellule dans l'onglet "export ARC".
Sheets("export ARC").Activate
Range("A1:HA200").Select
Selection.MergeCells = False
For i = 20 To Range("A65536").End(xlUp).Row
With Worksheets("Synthèse")
.[A6].Value = Cells(i, "A").Value
.[D6].FormulaR1C1 = _
"=MID('Export ARC'!R2C21,SEARCH(""§"",SUBSTITUTE('Export ARC'!R2C21,"" "",""§"",LEN('Export ARC'!R2C21)-LEN(SUBSTITUTE('Export ARC'!R2C21,"" "",""""))-1))+1,99)"
.[B8].Value = Cells(i, "AU").Value
.[D8].Value = Cells(i, "BB").Value
.[B9].Value = Cells(i, "AT").Value
.[D9].Value = Cells(i, "AZ").Value
.[B10].Value = Cells(i, "BD").Value
.[D10].Value = Cells(i, "BM").Value
.[B11].Value = Cells(i, "BQ").Value
.[D11].Value = Cells(i, "BW").Value
.[B12].Value = Cells(i, "BX").Value
.[D12].Value = Cells(i, "CB").Value
.[B13].Value = Cells(i, "AM").Value
.[D13].Value = Cells(i, "AS").Value
End With
'Duplique le tableau vers le bas.
Sheets("Synthèse").Select
Rows("6:13").Select
Selection.Copy
Range("A6").Select
Do Until IsEmpty(ActiveCell) = True
ActiveCell.Offset(15, 0).Activate
Loop
ActiveSheet.Paste
'Ré-initialise le tableau modèle.
Range("A66,B8:C15").Select
Selection.ClearContents
Range("A6").Select
ActiveCell.FormulaR1C1 = "MODELE NE PAS TOUCHER"
Range("a1").Select
Next i
Sheets("Synthèse").Activate
Application.ScreenUpdating = True
End Sub