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
- Fonction si et - Guide
- Déplacer une colonne excel - Guide
- Excel renvoyer la valeur d'une cellule en fonction d'une autre - Forum Logiciels
- Formule somme excel colonne - Guide
- Triez la liste comme sur cette illustration (attention, on ne voit que le début …). quel est le mot formé par les 6 dernières lettres de la colonne code ? - Forum Excel
8 réponses
Reivax962
Messages postés
3672
Date d'inscription
jeudi 16 juin 2005
Statut
Membre
Dernière intervention
11 février 2021
1 011
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
17205
Date d'inscription
dimanche 25 novembre 2007
Statut
Membre
Dernière intervention
19 octobre 2024
1 709
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 779
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 779
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 779
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
16603
Date d'inscription
lundi 12 septembre 2005
Statut
Contributeur
Dernière intervention
16 décembre 2023
3 310
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 779
>
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 779
>
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 779
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!