Supprimer une colonne sur plusieurs onglets

Re le forum,

Je souhaiterais supprimer la colonne H de tous mes onglets à partir du 3ème en décalant les colonnes I J et K vers la gauche, j'ai fais cela mais ça ne fonctionne pas :

Sub supp_col()
    For i = Sheets.Count To 3 Step -1
        Columns("H:H").Delete Shift:=xlToLeft
    Next
    MsbBox "Les colonnes prix OVH ont été enlevées"
End Sub

Bonjour,

Ceci devrait faire l'affaire :

Sub supp_col()
    For I = Sheets.Count To 3 Step -1
        ActiveWorkbook.Worksheets(I).Columns("H:H").Delete Shift:=xlToLeft
    Next
    MsgBox "Les colonnes prix OVH ont été enlevées"
End Sub

Super comme d'hab, je te remercie, bonne journée

En fait tu avais bien fait une boucle. Le souci c'est que rien dans ta boucle ne faisait référence à ton i. Donc il ne se passait rien.

C'est un peu comme si tu expliques les règles d'un jeu à une personne :

Toi : "C'est super simple, à chaque tour, on a 2 possibilités. Soit (tiens, il reste quelque chose à boire ?)... Allez c'est parti, on commence. C'est le 1er tour !"

Lui : "???"

C'est en gros la même chose (mais vraiment en gros hein, on n'est pas à une vache près).

Bonjour Romain, JoyeuxNoel,

Je propose une petite alternative, avec incrémentation, sans action sur l'indice, pour le plaisir du défi

Sub supp_col()

Dim i%

Worksheets(1).Activate

    For i = 1 To sheets.count

        With ActiveSheet
            .Columns(8).Delete
            .Next.Activate
        End With

    Next i

MsgBox "Les colonnes prix OVH ont été enlevées"

End Sub

Cordialement,

Hello 3GB,

Tu fais bien de passer :D

Je vois tes codes tourner depuis un petit moment et il n'y a pas à dire, c'est quand même plus carré que tout ce que je peux pondre ...
Est-ce que je me trompe si j'imagine que tu as eu une formation dans le domaine informatique et que tu as appris le codage bien comme il faut ?

Du coup, j'essaie de m'améliorer petit à petit et justement, j'essaie d'éviter de plus en plus les .activate (après m'être débarassé des .select depuis un bon moment ) pour gagner en vitesse d'exécution. Est-ce une bonne chose ? Est-ce vraiment utile ?

Par avance merci :D

Bonjour JoyeuxNoel,

Là, je suis flatté ... Non, j'utilise Excel depuis un moment maintenant mais ça ne fait qu'un an que j'ai découvert VBA (et je regrette d'avoir perdu autant de temps de peur de m'y frotter). Et c'est justement grâce aux réponses sur les forums que j'ai pu progresser.

Pour la vitesse d'exécution, c'est aussi ce que j'ai compris (mais je suis loin d'être un expert), et de manière générale il est préférable de n'utiliser que ce qui est nécessaire, et de privilégier tant que possible l'utilisation de la mémoire à la manipulation des objets.

Mais dans notre cas, je cherchais à faire le malin avec un contre exemple et j'avais pas 36 solutions que d'utiliser du Activate.

Sinon, je pense que le meilleur code ici serait :

Dim Ws as worksheet

For each Ws in Worksheets
    If Ws.index > 2 Then Ws.columns(8).delete
Next Ws

Bonne journée,

Oui, j'avais bien compris que c'était pour chercher la petite bête mais je profitais de l'occasion pour poser la question

Merci pour la réponse en tout cas et félicitations pour la progression fulgurante alors !

Au plaisir de te relire,

Rechercher des sujets similaires à "supprimer colonne onglets"