Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

XL 2021 Boucle VBA suppression colonne si chaîne de caractère non attendue

Aïden

XLDnaute Nouveau
Bonjour tout le monde !

J'espère que vous allez bien

Je viens vous demander de l'aide. En effet, grâce à toutes vos lumières sur le fofo j'ai réussi (j'en reviens pas moi-même) à réaliser un bout de code dans le fichier joint.

L'idée : J'ai un tableau avec plus de 200 colonnes J'ai besoin de ne conserver que le quart des colonnes (on va gagner de la place !).

Aussi j'ai essayer de faire un bout de code qui dans le tableau va boucler colonne par colonne pour voir si elle répond au besoin ou non si non suppression si oui on passe à la suivante oui c'est assez lourdeau dit comme cela...

Je vous joins un fichier test d'un tableau de 25 colonnes.... Et à ce jour si j'interromps la macro le travail est fait proprement mais sinon elle dure indéfiniment et je n'arrive pas à terminer la tâche.

Auriez-vous des idées pour accélérer largement le code? L'objectif est de conserver seulement les colonnes dont le titre contient dans l'exemple soit Ababa soit Tire : et c'est bien contient car l'intitulé peut varier...

Merci de votre aide

Et je m'excuse si la méthode que j'emploie est très débutante
 

Pièces jointes

  • test suppression colonne.xlsm
    24.7 KB · Affichages: 3

Aïden

XLDnaute Nouveau
Merci Phil,

Si je comprends bien, tu as inversé le calcul en partant non pas de la première mais de la dernière colonne ce qui te permet de ne jamais oublié une occurence?

J'ai bien compris?

Merci
 

Phil69970

XLDnaute Barbatruc
@Aïden

C'est bien ça et pour être plus précis quand on fait une boucle pour supprimer une ligne qui est l'exemple le plus courant on commence TOUJOURS par la fin et on remonte et idem pour les colonnes

Exemple :
j'ai 10 lignes de 2 à 11
Si tu supprimes par le début des que tu supprimes la ligne 2 la ligne 3 passe en N° 2 etc
Si tu pars de la fin tu supprimes la ligne 10 puis tu remontes d'une ligne tu supprimes la ligne 9 etc

VB:
Sub Test_A()
Dim i%                          'Declaration de ma variable
For i = 11 To 2 Step -1         'Ma boucle de 11 à 2
   Rows(i).Delete               'je supprime la ligne entière N°10 puis N°9  puis N°8 etc
Next i
End Sub

Avec la macro Test_A on obtient ceci

==>


VB:
Sub Test_B()
Dim i%                          'Declaration de ma variable
For i = 2 To 11                 'Ma boucle de 2 à 11
   Rows(i).Delete               'je supprime la ligne entière N°2 puis N°3  puis N°4 etc mais les N° de ligne remonte à chaque fois...
Next i
End Sub
Avec la macro Test_B on obtient cela

==>

Tu vois la différence et le problème si tu fais pas la boucle de suppression dans le bon sens !

Merci de ton retour

@Phil69970
 

Discussions similaires

Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…