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

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

1683616883467.png
==>
1683617149206.png



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

1683617011992.png
==>
1683617056502.png


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

Statistiques des forums

Discussions
312 113
Messages
2 085 425
Membres
102 886
dernier inscrit
eurlece