XL 2013 par vba supprimer des colonnes si

Arctica

XLDnaute Nouveau
Bonjour a tous,

j'ai un tableau avec en première ligne les critères suivant
Étiquettes de lignes 10 11 12 13 16 17 18 21 22 25 26 27 29 Total général
ce que je souhaiterai c'est tester et supprimer les colonnes entieres si l'entête est 12 13 22 23 24 25 (il peut arriver que dans les données extraites une des entêtes indiquées n'existe pas au moment de l'extraction
j'ai ce code
Sub macro16()
Dim F
Dim i As Integer
Dim j As Integer
F = Array("10", "11", "16", "17", "21", "27", "29")
For i = 1 To 1 Step -1 premier ligne a tester
For j = 15 To 1 Step -1 15 premieres colonnes
If Cells(i, j) <> F(i) Then
Columns(j).Delete
End If
Next
Next
End Sub
mais celui ci me supprime toutes les colonnes hormis la colonne 11
pourriez vous m'aider?
 

vgendron

XLDnaute Barbatruc
Re : par vba supprimer des colonnes si

Hello,

problème de boucle..

Code:
Sub macro16()
Dim F
Dim i As Integer
Dim j As Integer
F = Array(10, 11, 16, 17, 21, 27, 29)

    For j = 15 To 1 Step -1 '15 premieres colonnes
    colonneAgarder = False
        For i = 0 To 6  'premier ligne a tester
            If Cells(1, j) = F(i) Then colonneAgarder = True
        Next i
    If colonneAgarder = False Then Columns(j).Delete
    Next j

End Sub

PS: j'ai transformé les chaines de caractères "10" "11".. du array en nombres.. sinon. ca ne marchait pas dans MON fichier exemple.
 

Papou-net

XLDnaute Barbatruc
Re : par vba supprimer des colonnes si

Bonsoir Arctica,

Essaie en définissant le tableau F en variables numériques.

Ex:

Code:
Sub macro16()
Dim F
Dim i As Integer
Dim j As Integer
    F = Array(10, 11, 16, 17, 21, 27, 29)
    For i = 1 To 1 Step -1 premier ligne a tester
    For j = 15 To 1 Step -1 15 premieres  colonnes 
  If Cells(i, j) <> F(i) Then
            Columns(j).Delete
        End If
    Next
    Next
End Sub
Cordialement.

Oups, bonsoir vgendron.
 

vgendron

XLDnaute Barbatruc
Re : par vba supprimer des colonnes si

hello Papou

si ne me trompe pas, le code présente plusieurs soucis

1) array commence à 0 et pas 1: F(1) c'est la valeur 11
2)pour i allant de 1 à 1.. ca ne teste QUE la valeur 11 justement.. les autres valeurs du tableau ne sont pas testées
3) la liste des colonnes à garder (le array) est définie avec des chaines de caractères. et pas des entiers.. à voir selon le fichier exemple tant espéré
4) à supposer que c'était juste pour le test et que finalement la boucle sera
pour i allant de 1 à 7 (et donc. plutot de 0 à 6), ca ne marchera pas non plus. car.
Pour la première valeur 10..
on regarde toutes les colonnes à partir de la droite. et si elles ne correspondent pas;. on les supprime..

sauf que la. on est pas encore allé tester les autres valeurs du tableau..
 

Arctica

XLDnaute Nouveau
Re : par vba supprimer des colonnes si

Bonjour vgendron et Papou-net

J'ai testé la macro de vgendron qui marche bien si je laisse les chaines de caractères entre guillemet, par contre si je les mets sous forme numérique il me supprime toutes les colonnes de même qu'avec la macro modifiée de Papou-net
Merci pour votre aide
 

vgendron

XLDnaute Barbatruc
Re : par vba supprimer des colonnes si

Hello

par contre si je les mets sous forme numérique il me supprime toutes les colonnes

c'est pour ca que je disais
à voir selon le fichier exemple

si ta première ligne est en format texte, alors, oui, il faut laisser les guillemets dans la liste..
si la première ligne est en format standard, il faut donc enlever les guillemets

"11" est vu comme une chaine de caractères
11 est vu comme un nombre

et "11" est différent de 11 donc la macro supprime la colonne
 

Arctica

XLDnaute Nouveau
Re : par vba supprimer des colonnes si

Bonjour vgendron

Oui je pense que les données sont au format texte car les données sont extraites d'un logiciel
Merci pour ton aide, il me reste deux opés a faire , j'essaye d'abord seul car je ne suis qu'a un petit niveau sinon je demanderai votre aide
 

Discussions similaires