Bonjour à tous,
je suis novice en codage vba...enfin pour être même très honnête je n'y connais pas grand chose !
Pour un usage personnel, j'ai actuellement une base de données excel avec plusieurs onglets que j'ai réussi à consolider grâce à quelques tutos et lecture ... par contre lorsque la consolidation est faite, certaines en-tête ne sont pas dans le même style (je les ai mis en rouge dans mon ficher que je vous joindrai si j'y arrive ), en plus de cela, j'ai la première en-tête qui se répète juste dessous de celui que j'ai crée sur l'onglet Consolidation.. (je sais pas si je me suis bien exprimée ). Pouvez-vous me dire pourquoi cela fait ça ?
deuxième question : je souhaite insérer 3 colonnes entre C et D dans le fichier consolidation pour que cela se fasse de manière simultanée dans les autres onglets, j'ai réussi à en insérer qu'une, du coup j'ai essayé de bidouiller le code, et j'arrive à insérer dans les onglets 1 à 7 et pas dans l'onglet consolidation !(je voulais l'inverse, insérer dans la consolidation et répercutions simultanée dans les autres onglets). Quand j'essaie de ne pas mettre de numéro de colonne, cela ne fonctionne pas. Comment faire ?
je vous joins déjà le code que j'ai utilisé, j'ai peut être fait une erreur quelque part.
Option Explicit
'*******************************
'procédure permettant la consolidation
'de plusieurs données
'*************************************
'Déclaration des variables
Dim I As Integer, J As Integer
Dim DerniereLigne As Integer
Dim LastRowconsolidation As Integer
'Procédure permettant d'effacer toutes les données de la feuille consolidation
Sub effacedonnées()
Worksheets("consolidation").Select
Rows("6:1000000").Select
Selection.Clear
Range("A6").Select
End Sub
'Procédure permettant la consolidation des feuilles du classeur
Sub consolider()
Application.ScreenUpdating = False
effacedonnées
'Boucle permettant de lire toutes les feuilles à consolider
For J = 1 To 7 'Parcours les feuilles de AUTISME à UEMA
Sheets(J).Activate
Sheets(J).Select
DerniereLigne = Range("A1000000").End(xlUp).Row
For I = 1 To DerniereLigne
Sheets(J).Select
Rows(I).Select
Selection.Copy
Sheets("consolidation").Select
LastRowconsolidation = Range("a1000000").End(xlUp).Row + 1
Cells(LastRowconsolidation, 1).Select
ActiveSheet.Paste
Application.CutCopyMode = False
Next I
Next J
Application.ScreenUpdating = True
MsgBox "La consolidation est terminée...", vbOKOnly + vbInformation, "Information"
End Sub
'Procédure permettant l'insertion de colonnes
Sub InsererColonne()
Dim C As Worksheet
Dim J As Byte
Dim I As Integer
Dim O As Worksheet
Dim DLO As Integer
Dim DLC As Integer
Set C = Worksheets("Consolidation")
For J = 1 To 7
Set O = Worksheets(J)
DLO = O.Cells(Application.Rows.Count, "A").End(xlUp).Row
For I = 1 To DLO
DLC = C.Cells(Application.Rows.Count, "A").End(xlUp).Row + 1
O.Rows(I).Copy C.Cells(DLC, "A")
Next I
O.Columns(4).Insert Shift:=xlToRight
Next J
End Sub
Je sais pas du tout si je me suis bien exprimée mais je l'espère !
Merci d'avance,
je suis novice en codage vba...enfin pour être même très honnête je n'y connais pas grand chose !
Pour un usage personnel, j'ai actuellement une base de données excel avec plusieurs onglets que j'ai réussi à consolider grâce à quelques tutos et lecture ... par contre lorsque la consolidation est faite, certaines en-tête ne sont pas dans le même style (je les ai mis en rouge dans mon ficher que je vous joindrai si j'y arrive ), en plus de cela, j'ai la première en-tête qui se répète juste dessous de celui que j'ai crée sur l'onglet Consolidation.. (je sais pas si je me suis bien exprimée ). Pouvez-vous me dire pourquoi cela fait ça ?
deuxième question : je souhaite insérer 3 colonnes entre C et D dans le fichier consolidation pour que cela se fasse de manière simultanée dans les autres onglets, j'ai réussi à en insérer qu'une, du coup j'ai essayé de bidouiller le code, et j'arrive à insérer dans les onglets 1 à 7 et pas dans l'onglet consolidation !(je voulais l'inverse, insérer dans la consolidation et répercutions simultanée dans les autres onglets). Quand j'essaie de ne pas mettre de numéro de colonne, cela ne fonctionne pas. Comment faire ?
je vous joins déjà le code que j'ai utilisé, j'ai peut être fait une erreur quelque part.
Option Explicit
'*******************************
'procédure permettant la consolidation
'de plusieurs données
'*************************************
'Déclaration des variables
Dim I As Integer, J As Integer
Dim DerniereLigne As Integer
Dim LastRowconsolidation As Integer
'Procédure permettant d'effacer toutes les données de la feuille consolidation
Sub effacedonnées()
Worksheets("consolidation").Select
Rows("6:1000000").Select
Selection.Clear
Range("A6").Select
End Sub
'Procédure permettant la consolidation des feuilles du classeur
Sub consolider()
Application.ScreenUpdating = False
effacedonnées
'Boucle permettant de lire toutes les feuilles à consolider
For J = 1 To 7 'Parcours les feuilles de AUTISME à UEMA
Sheets(J).Activate
Sheets(J).Select
DerniereLigne = Range("A1000000").End(xlUp).Row
For I = 1 To DerniereLigne
Sheets(J).Select
Rows(I).Select
Selection.Copy
Sheets("consolidation").Select
LastRowconsolidation = Range("a1000000").End(xlUp).Row + 1
Cells(LastRowconsolidation, 1).Select
ActiveSheet.Paste
Application.CutCopyMode = False
Next I
Next J
Application.ScreenUpdating = True
MsgBox "La consolidation est terminée...", vbOKOnly + vbInformation, "Information"
End Sub
'Procédure permettant l'insertion de colonnes
Sub InsererColonne()
Dim C As Worksheet
Dim J As Byte
Dim I As Integer
Dim O As Worksheet
Dim DLO As Integer
Dim DLC As Integer
Set C = Worksheets("Consolidation")
For J = 1 To 7
Set O = Worksheets(J)
DLO = O.Cells(Application.Rows.Count, "A").End(xlUp).Row
For I = 1 To DLO
DLC = C.Cells(Application.Rows.Count, "A").End(xlUp).Row + 1
O.Rows(I).Copy C.Cells(DLC, "A")
Next I
O.Columns(4).Insert Shift:=xlToRight
Next J
End Sub
Je sais pas du tout si je me suis bien exprimée mais je l'espère !
Merci d'avance,
Pièces jointes
Dernière édition: