Suppresion de colonne en fonction de la valeur de la premiére li
Résolu/Fermé
camcam1404
-
23 janv. 2017 à 14:35
camcam1404 Messages postés 64 Date d'inscription mardi 13 décembre 2016 Statut Membre Dernière intervention 9 septembre 2019 - 31 janv. 2017 à 13:46
camcam1404 Messages postés 64 Date d'inscription mardi 13 décembre 2016 Statut Membre Dernière intervention 9 septembre 2019 - 31 janv. 2017 à 13:46
A voir également:
- Suppresion de colonne en fonction de la valeur de la premiére li
- Le fichier contient une liste de prénoms. triez ce tableau par ordre alphabétique des prénoms. quel mot est formé par les 6 premières lettres de la colonne code ? - Forum Bureautique
- Quel mot est formé par les 6 premières lettres de la colonne code ? - Forum Excel
- Déplacer une colonne excel - Guide
- Un agent immobilier a préparé un diaporama pour présenter une maison à vendre. appliquez la mise en forme de la première diapositive à toutes les autres. quel est le code du portail ? ✓ - Forum Powerpoint
- Le fichier contient le nombre de voyageurs dans 3 gares. dans la cellule b5, saisissez une formule qui calcule le total et se met à jour si on change une valeur du tableau. quel total obtenez-vous ? quelle formule avez-vous saisie ? ✓ - Forum Excel
8 réponses
Reivax962
Messages postés
3671
Date d'inscription
jeudi 16 juin 2005
Statut
Membre
Dernière intervention
11 février 2021
1 008
23 janv. 2017 à 15:18
23 janv. 2017 à 15:18
Bonjour,
Dans cette ligne :
Est-ce qu'il ne faudrait pas uniformiser ça ?
Par ailleurs, fais attention sur ta variable "i". Je ne sais pas si tu supprimes la colonne ou son contenu, mais si tu supprimes la colonne elle-même, il ne faut pas incrémenter "i" puisque toutes les colonnes suivantes ont été décalées...
Xavier
Dans cette ligne :
If Cells (1,i) <> "A" or Cells (1,i) <> "B"; Cells (1,i) <> "C", Cells (1,i) <> "D"; Cells (1,i) <> "E" Then, un coup tu sépares les termes par "or", un coup par ";", un coup par ","...
Est-ce qu'il ne faudrait pas uniformiser ça ?
Par ailleurs, fais attention sur ta variable "i". Je ne sais pas si tu supprimes la colonne ou son contenu, mais si tu supprimes la colonne elle-même, il ne faut pas incrémenter "i" puisque toutes les colonnes suivantes ont été décalées...
Xavier
ThauTheme
Messages postés
1442
Date d'inscription
mardi 21 octobre 2014
Statut
Membre
Dernière intervention
29 juillet 2022
160
23 janv. 2017 à 15:18
23 janv. 2017 à 15:18
Bonjour Camcam, bonjour le forum,
Peut-être comme ça :
Quand on supprime (ligne ou colonne) il est d'usage de partir de la dernière jusqu'à la première avec Step -1 pour assurer la prochaine (ligne ou colonne) avec Next I.
Et ton autre problème ? Tu n'as pas dis si ça fonctionnait pou pas...
Peut-être comme ça :
Sub columnsdelete()
Dim TV(1 To 5)
Dim I As Long
Dim J As Byte
Dim LastCol As Long
TV(1) = "A"
TV(2) = "B"
TV(3) = "C"
TV(4) = "D"
TV(5) = "E"
LastCol = Cells(1, Columns.Count).End(xlToLeft).Column
For I = LastCol To 4 Step -1
For J = 1 To 5
If Cells(1, I).Value = TV(J) Then GoTo suite
Next J
Columns(I).Delete
suite:
Next I
End Sub
Quand on supprime (ligne ou colonne) il est d'usage de partir de la dernière jusqu'à la première avec Step -1 pour assurer la prochaine (ligne ou colonne) avec Next I.
Et ton autre problème ? Tu n'as pas dis si ça fonctionnait pou pas...
camcam1404
Messages postés
64
Date d'inscription
mardi 13 décembre 2016
Statut
Membre
Dernière intervention
9 septembre 2019
24 janv. 2017 à 13:48
24 janv. 2017 à 13:48
C'est noté !
f894009
Messages postés
16904
Date d'inscription
dimanche 25 novembre 2007
Statut
Membre
Dernière intervention
18 mars 2023
1 678
23 janv. 2017 à 15:30
23 janv. 2017 à 15:30
Bonjour tout le monde,
Sub columnsdelete()
Dim i As Long
Dim lastcol As Long
lastcol = Cells(1, Columns.Count).End(xlToLeft).Column
For i = 1 To lastcol
If Cells(1, i) < "A" Or Cells(1, i) > "E" Then Cells(1, i).EntireColumn.Delete
Next i
End Sub
camcam1404
Messages postés
64
Date d'inscription
mardi 13 décembre 2016
Statut
Membre
Dernière intervention
9 septembre 2019
24 janv. 2017 à 13:35
24 janv. 2017 à 13:35
Merci mais je cherche quelque chose de plus "général" ou cas où il y aurait pas de liens entre les noms de la première ligne pour les colonnes à suppimer.
Patrice33740
Messages postés
8556
Date d'inscription
dimanche 13 juin 2010
Statut
Membre
Dernière intervention
2 mars 2023
1 762
23 janv. 2017 à 15:30
23 janv. 2017 à 15:30
Bonjour,
Ou bien :
Ou bien :
Sub columnsdelete()
Dim i As Long
Dim lastcol As Long
With Worksheets(1)
lastcol = .Cells(1, .Columns.Count).End(xlToLeft).Column
For i = lastcol To 4 Step -1
Select Case .Cells(1, i).Value
Case "A", "B", "C", "D", "E"
Case Else
.Columns(i).Delete
End Select
Next i
End With
End Sub
camcam1404
Messages postés
64
Date d'inscription
mardi 13 décembre 2016
Statut
Membre
Dernière intervention
9 septembre 2019
24 janv. 2017 à 13:47
24 janv. 2017 à 13:47
Ca fonctionne. Merci !
camcam1404
Messages postés
64
Date d'inscription
mardi 13 décembre 2016
Statut
Membre
Dernière intervention
9 septembre 2019
24 janv. 2017 à 13:53
24 janv. 2017 à 13:53
Une autre question !
Est ce qu'il serait possible d'entrer le "case" par le biais d'une boite de dialogue ?
J'aimerais que l'utilisateur soit libre de choisir les colonnes qu'il veut garder.
(je cherche =D)
Est ce qu'il serait possible d'entrer le "case" par le biais d'une boite de dialogue ?
J'aimerais que l'utilisateur soit libre de choisir les colonnes qu'il veut garder.
(je cherche =D)
Patrice33740
Messages postés
8556
Date d'inscription
dimanche 13 juin 2010
Statut
Membre
Dernière intervention
2 mars 2023
1 762
Modifié par Patrice33740 le 24/01/2017 à 16:47
Modifié par Patrice33740 le 24/01/2017 à 16:47
Beaucoup de choses sont possible, comme par exemple la solution de ThauThème (bonjour ...), Il faut préciser ton besoin, le texte testé est-il susceptible de changer (par exemple "Test" au lieu de "A") ? Combien de colonnes concernées au maximum ....
camcam1404
Messages postés
64
Date d'inscription
mardi 13 décembre 2016
Statut
Membre
Dernière intervention
9 septembre 2019
25 janv. 2017 à 16:03
25 janv. 2017 à 16:03
Encore une question !
Dans le cas ou la premiére ligne contient A mais pas uniquement.
Il faut que j'utilise autre chose que value.
Se serait donc un Like ?
Mais j'aime la structure du programme avec le Select.
Tu sais comment je pourrai contourner l´utilisation du Like dans ce cas ?
Dans le cas ou la premiére ligne contient A mais pas uniquement.
Il faut que j'utilise autre chose que value.
Se serait donc un Like ?
Mais j'aime la structure du programme avec le Select.
Tu sais comment je pourrai contourner l´utilisation du Like dans ce cas ?
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
ThauTheme
Messages postés
1442
Date d'inscription
mardi 21 octobre 2014
Statut
Membre
Dernière intervention
29 juillet 2022
160
24 janv. 2017 à 14:50
24 janv. 2017 à 14:50
Re,
Une solution avec une UserForm nommée UserForm1 :
L'Userform1 contient :
- 1 Label avec le texte : "Sélectionnez dans la liste les colonnes que vous souhaitez garder."
- 1 ListBox nommée ListBox1
- 1 CommandButton nommé CommandButton1, texte : "Valider"
- 1 CommandButton nommé CommandButton2, texte : "Annuler"

Le code de l'UserForm :
la procédure Sub columnsdelete ouvre l'UserForm. L'utilisateur coche dans la liste la ou les colonnes qu'il souhaite garder et valide...
Une solution avec une UserForm nommée UserForm1 :
Sub columnsdelete() UserForm1.Show End Sub
L'Userform1 contient :
- 1 Label avec le texte : "Sélectionnez dans la liste les colonnes que vous souhaitez garder."
- 1 ListBox nommée ListBox1
- 1 CommandButton nommé CommandButton1, texte : "Valider"
- 1 CommandButton nommé CommandButton2, texte : "Annuler"

Le code de l'UserForm :
Private Sub UserForm_Initialize()
Me.Caption = "SUPPRESSION"
Me.ListBox1.ListStyle = fmListStyleOption
Me.ListBox1.MultiSelect = fmMultiSelectMulti
Me.ListBox1.AddItem "A"
Me.ListBox1.AddItem "B"
Me.ListBox1.AddItem "C"
Me.ListBox1.AddItem "D"
Me.ListBox1.AddItem "E"
End Sub
Private Sub CommandButton1_Click()
Dim I As Long
Dim J As Byte
Dim LastCol As Long
With Worksheets(1)
LastCol = .Cells(1, .Columns.Count).End(xlToLeft).Column
For I = LastCol To 4 Step -1
For J = 1 To 5
If .Cells(1, I).Value = Me.ListBox1.List(J) Then GoTo suite
Next J
.Columns(I).Delete
suite:
Next I
End With
Unload Me
End Sub
Private Sub CommandButton2_Click()
Unload Me
End Sub
la procédure Sub columnsdelete ouvre l'UserForm. L'utilisateur coche dans la liste la ou les colonnes qu'il souhaite garder et valide...
camcam1404
Messages postés
64
Date d'inscription
mardi 13 décembre 2016
Statut
Membre
Dernière intervention
9 septembre 2019
25 janv. 2017 à 08:12
25 janv. 2017 à 08:12
Bonjour ThautTheme,
Si j'ai bien compris pour chaque bouton la structure du programme doit etre:
Private Sub Nom du bouton
Unload me
End sub
Cependant le Sub columsdelete doit apparaitre quelque part non ?
Si j'ai bien compris pour chaque bouton la structure du programme doit etre:
Private Sub Nom du bouton
Unload me
End sub
Cependant le Sub columsdelete doit apparaitre quelque part non ?
ThauTheme
Messages postés
1442
Date d'inscription
mardi 21 octobre 2014
Statut
Membre
Dernière intervention
29 juillet 2022
160
25 janv. 2017 à 09:27
25 janv. 2017 à 09:27
Re,
Non, t'as pas bien compris... Le code de l'Userform se trouve dans le composant VBA Userform1. Cela signifie qu'il te faudra insérer une UserForm dans ton fichier avec les différents contrôles que j'ai cités, puis y copier/coller le code que je t'ai donné pour elle...
Le Sub columsdelete reste là où tu l'avais mis précédemment mais son code ne contient plus que la ligne pour l'ouverture de l'UserForm.
C'est à la validation de l'UserForm que se fait le traitement.
C'est toi qui a fourni Sub columsdelete dans ton premier post, je n'ai fait que l'utiliser pour te simplifier les choses (enfin, je pensais)...
Non, t'as pas bien compris... Le code de l'Userform se trouve dans le composant VBA Userform1. Cela signifie qu'il te faudra insérer une UserForm dans ton fichier avec les différents contrôles que j'ai cités, puis y copier/coller le code que je t'ai donné pour elle...
Le Sub columsdelete reste là où tu l'avais mis précédemment mais son code ne contient plus que la ligne pour l'ouverture de l'UserForm.
C'est à la validation de l'UserForm que se fait le traitement.
C'est toi qui a fourni Sub columsdelete dans ton premier post, je n'ai fait que l'utiliser pour te simplifier les choses (enfin, je pensais)...
camcam1404
Messages postés
64
Date d'inscription
mardi 13 décembre 2016
Statut
Membre
Dernière intervention
9 septembre 2019
25 janv. 2017 à 10:57
25 janv. 2017 à 10:57
ok je vais me pencher la dessus.
Merci pour le coup de pouce !
Merci pour le coup de pouce !
camcam1404
Messages postés
64
Date d'inscription
mardi 13 décembre 2016
Statut
Membre
Dernière intervention
9 septembre 2019
Modifié par camcam1404 le 26/01/2017 à 15:28
Modifié par camcam1404 le 26/01/2017 à 15:28
Bonjour ThauTeme,
voilà maintenant je sais créer des Userform ! :)
Mais en exécutant le programme, j'ai une erreur de type 381 à la ligne 21 qui apparait.
Tu saurais pourquoi ?
voilà maintenant je sais créer des Userform ! :)
Mais en exécutant le programme, j'ai une erreur de type 381 à la ligne 21 qui apparait.
Tu saurais pourquoi ?
Patrice33740
Messages postés
8556
Date d'inscription
dimanche 13 juin 2010
Statut
Membre
Dernière intervention
2 mars 2023
1 762
26 janv. 2017 à 21:43
26 janv. 2017 à 21:43
Remplaces :
For J = 1 To 5Par
For J = 0 To 4
camcam1404
Messages postés
64
Date d'inscription
mardi 13 décembre 2016
Statut
Membre
Dernière intervention
9 septembre 2019
Modifié par camcam1404 le 27/01/2017 à 08:49
Modifié par camcam1404 le 27/01/2017 à 08:49
La numérotation d´un tableau commence toujours à 0. J'avais pas pris ca en compte !
Mais que les sélection soient cochées ou non, les colonnes apparaissent toujours quand à l'éxécution code..
Mais que les sélection soient cochées ou non, les colonnes apparaissent toujours quand à l'éxécution code..
michel_m
Messages postés
16593
Date d'inscription
lundi 12 septembre 2005
Statut
Contributeur
Dernière intervention
7 mars 2023
3 291
Modifié par michel_m le 25/01/2017 à 09:32
Modifié par michel_m le 25/01/2017 à 09:32
Bonjour tt le monde
on va jusqu'à quelle colonne ? Z, AZ, BZ..... XFD ?
Michel
on va jusqu'à quelle colonne ? Z, AZ, BZ..... XFD ?
Michel
camcam1404
Messages postés
64
Date d'inscription
mardi 13 décembre 2016
Statut
Membre
Dernière intervention
9 septembre 2019
Modifié par camcam1404 le 25/01/2017 à 11:40
Modifié par camcam1404 le 25/01/2017 à 11:40
jusqu´a la colonne MQ
Patrice33740
Messages postés
8556
Date d'inscription
dimanche 13 juin 2010
Statut
Membre
Dernière intervention
2 mars 2023
1 762
>
camcam1404
Messages postés
64
Date d'inscription
mardi 13 décembre 2016
Statut
Membre
Dernière intervention
9 septembre 2019
25 janv. 2017 à 11:36
25 janv. 2017 à 11:36
Combien et quel type d'intitulé est-on susceptible de chercher ?
camcam1404
Messages postés
64
Date d'inscription
mardi 13 décembre 2016
Statut
Membre
Dernière intervention
9 septembre 2019
25 janv. 2017 à 11:50
25 janv. 2017 à 11:50
Beaucoup !
56 Colonnes a garder: point commun premiére ligne contient le mot "Rouge"
84 Colonnes: point a garder commun premiére ligne contient le mot "Bleu"
84 Colonnes a garder : point commun premiére ligne contient le mot "Vert"
28 Colonnes a garder:point commun premiére ligne contient le mot "Orange"
28 Colonnes a garder:point commun premiére ligne contient le mot "Jaune"
28 Colonnes a garder:point commun premiére ligne contient le mot "Turquoise"
28 Colonnes a garder:point commun premiére ligne contient le mot "Beige"
14 Colonnes a garder:point commun premiére ligne contient le mot "Violet"
peux importe que le mot "Rouge" soit en majuscule, minuscule etc
56 Colonnes a garder: point commun premiére ligne contient le mot "Rouge"
84 Colonnes: point a garder commun premiére ligne contient le mot "Bleu"
84 Colonnes a garder : point commun premiére ligne contient le mot "Vert"
28 Colonnes a garder:point commun premiére ligne contient le mot "Orange"
28 Colonnes a garder:point commun premiére ligne contient le mot "Jaune"
28 Colonnes a garder:point commun premiére ligne contient le mot "Turquoise"
28 Colonnes a garder:point commun premiére ligne contient le mot "Beige"
14 Colonnes a garder:point commun premiére ligne contient le mot "Violet"
peux importe que le mot "Rouge" soit en majuscule, minuscule etc
Patrice33740
Messages postés
8556
Date d'inscription
dimanche 13 juin 2010
Statut
Membre
Dernière intervention
2 mars 2023
1 762
>
camcam1404
Messages postés
64
Date d'inscription
mardi 13 décembre 2016
Statut
Membre
Dernière intervention
9 septembre 2019
25 janv. 2017 à 13:06
25 janv. 2017 à 13:06
à garder ou à supprimer ?
camcam1404
Messages postés
64
Date d'inscription
mardi 13 décembre 2016
Statut
Membre
Dernière intervention
9 septembre 2019
25 janv. 2017 à 13:14
25 janv. 2017 à 13:14
à garder
Par exemple:
je choisis de garder les 28 colonnes qui contiennent en premiére ligne le mot "beige" donc les 56+ 84*2+28*3+14 colonnes vont etre supprimé.
Par exemple:
je choisis de garder les 28 colonnes qui contiennent en premiére ligne le mot "beige" donc les 56+ 84*2+28*3+14 colonnes vont etre supprimé.
Patrice33740
Messages postés
8556
Date d'inscription
dimanche 13 juin 2010
Statut
Membre
Dernière intervention
2 mars 2023
1 762
27 janv. 2017 à 11:00
27 janv. 2017 à 11:00
Bonjour,
Essaies ce code :
Un fichier exemple :
https://www.cjoint.com/c/GABj7IFEDXA
Essaies ce code :
Private Sub UserForm_Initialize()
Me.Caption = "SUPPRESSION"
Me.ListBox1.ListStyle = fmListStyleOption
Me.ListBox1.MultiSelect = fmMultiSelectMulti
Me.ListBox1.AddItem "A"
Me.ListBox1.AddItem "B"
Me.ListBox1.AddItem "C"
Me.ListBox1.AddItem "D"
Me.ListBox1.AddItem "E"
End Sub
Private Sub CommandButton1_Click()
Dim I As Long
Dim J As Byte
Dim LastCol As Long
Dim Suppr As Boolean
With Worksheets(1)
LastCol = .Cells(1, .Columns.Count).End(xlToLeft).Column
For I = LastCol To 4 Step -1
Suppr = True
For J = 0 To 4
If Me.ListBox1.Selected(J) Then
If .Cells(1, I).Value = Me.ListBox1.List(J) Then Suppr = False
End If
Next J
If Suppr Then .Columns(I).Delete
Next I
End With
Unload Me
End Sub
Private Sub CommandButton2_Click()
Unload Me
End Sub
Un fichier exemple :
https://www.cjoint.com/c/GABj7IFEDXA
camcam1404
Messages postés
64
Date d'inscription
mardi 13 décembre 2016
Statut
Membre
Dernière intervention
9 septembre 2019
31 janv. 2017 à 13:46
31 janv. 2017 à 13:46
Ca marche !
Merci Patrice 33740
Merci Patrice 33740
24 janv. 2017 à 13:32
oui il faut que j'uniformise tout ca. Et oui je souhaite supprimer la colonne entiére.
Merci!