Insertion colonne en simultanée

Bonjour,

J'ai un tableau avec plusieurs onglets que j'ai réussi à consolider avec un code VBA grâce à votre aide. Cependant, je souhaite savoir s'il est possible d'insérer des colonnes de façon simultanée entre le C et D sur tous les onglets, puisque je dois aujourd'hui y ajouter des données qui n'étaient pas nécessaire de base ?

Il me semblait que c'était possible en sélectionnant tous les onglets mais ça ne marche pas. Est-ce lié au fait qu'il y ait un code ?

Y-a-t-il un moyen d'améliorer le code pour pouvoir faire ces insertions de façon simultanée ?

image

Merci a tous,

je n'arrive pas à insérer mon fichier :( mais ça ressemble à ça

image

Bonjour Claudia, bonjour le forum,

Comme tu as préféré une image plutôt que le code on ne peut pas le modifier directement !... Le voici modifié et optimisé :

Sub Macro1()
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

La règle d'or en VBA s'est d'éviter autant que possible les Select et/ou Activate qui ne font que ralentir l'exécution et sont source de plantages.

Merci Thauthème, mais à quel niveau dois-je l'insérer ? Désolée je ne m'y connais vraiment pas, je viens à peine de commencer les VBA....

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

Merci à toi,

Re,

Oui pardon ma solution n'était pas claire. Remplace le code de la procédure Consolider par celui-là :

Sub consolider()
Dim C As Worksheet
Dim J As Byte
Dim I As Integer
Dim O As Worksheet
Dim DLO As Integer
Dim DLC As Integer

Application.ScreenUpdating = False
effacedonnées
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
Application.ScreenUpdating = True
MsgBox "La consolidation est terminée...", vbOKOnly + vbInformation, "Information"
End Sub

Bonjour, merci pour ta réponse. je viens seulement de m'y pencher de nouveau !

J'ai essayé le code, il fonctionne c'est magique ! C'est vraiment pratique quand on s'y connait bien tout ça :D

Par contre j'ai encore une dernière question : est-ce possible d'insérer des colonnes de façon aléatoire dans le tableau ? en fait je veux insérer 3 colonnes entre C et D (je me suis mal exprimé) et si jamais ultérieurement pouvoir insérer des colonnes ailleurs s'il faut.

Lors de suppression du coup est-ce que ça le fait d'office sur tous les onglets ? en théorie, il ne devrait pas y avoir de suppression mais je me pose la question !

Merci :D

Bonjour Claudia, bonjour le forum,

Par macro c'est pas possible, sans passer par une usine à gaz, car il n'y a pas d'événement qui se déclenche à l'ajout ou suppression d'une colonne. En revanche, si tu sélectionnes tous les onglets, la suppression ou l'ajout d'une, ou plusieurs, colonnes dans l'onglet actif sera répercutée dans tous les autres onglets...

Bonjour TauThème,

Merci pour ta réponse . je te souhaite une bonne journée et merci encore !

Rechercher des sujets similaires à "insertion colonne simultanee"