Excel 2007 supprimer colonne
Résolu
VG13
Messages postés
20
Date d'inscription
Statut
Membre
Dernière intervention
-
VG13 Messages postés 20 Date d'inscription Statut Membre Dernière intervention -
VG13 Messages postés 20 Date d'inscription Statut Membre Dernière intervention -
Bonjour,
mon précédent post n'ayant pas trouvé de succès je vais formuler autrement
Quelqu'un aurais-t'il une idée de macro pour garder sur un tableau (de colonnes ou ligne variable) que les colonnes où il y à la valeur 1 dans une cellule et bien entendu supprimer toutes les autres colonnes ?
Il me manque juste cette partie de code pour finir mon projet.
Merci
mon précédent post n'ayant pas trouvé de succès je vais formuler autrement
Quelqu'un aurais-t'il une idée de macro pour garder sur un tableau (de colonnes ou ligne variable) que les colonnes où il y à la valeur 1 dans une cellule et bien entendu supprimer toutes les autres colonnes ?
Il me manque juste cette partie de code pour finir mon projet.
Merci
A voir également:
- Excel 2007 supprimer colonne
- Déplacer colonne excel - Guide
- Supprimer rond bleu whatsapp - Guide
- Trier colonne excel - Guide
- Formule somme excel colonne - Guide
- Save as pdf office 2007 - Télécharger - Bureautique
10 réponses
Bonjour,
sub suppression ()
i=1
do while cells(i,1) <> "" ' tant que dans ta colonne A tu as une valeur
j=1
do while cells(i,j)<>"" 'tant que dans tes colonnes de la ligne itu as une valeur
if cells(i,j) <> 1 then 'si tu as dans ta colonnej et ligne i une valeur différente de 1, tu supprimes cette cellule
cells(i,j).select
Selection.Delete Shift:=xlToLeft
j=j-1
end if
j=j+1 'on va à la colonne suivante
loop
i=i+1 'on va à la ligne suivante
loop
end sub
sub suppression ()
i=1
do while cells(i,1) <> "" ' tant que dans ta colonne A tu as une valeur
j=1
do while cells(i,j)<>"" 'tant que dans tes colonnes de la ligne itu as une valeur
if cells(i,j) <> 1 then 'si tu as dans ta colonnej et ligne i une valeur différente de 1, tu supprimes cette cellule
cells(i,j).select
Selection.Delete Shift:=xlToLeft
j=j-1
end if
j=j+1 'on va à la colonne suivante
loop
i=i+1 'on va à la ligne suivante
loop
end sub
Bonjour Mélanie1324,
Merci pour ta réponse, j'ai testé ce matin ta boucle. Elle supprime toutes les cellules qui n'ont pas la valeur 1. Je me retrouve avec un tableau qu'avec des 1.
J'ai du mal m'exprimer sur mon post ce que je veux c'est garder les colonnes entières qui ont la valeur 1 dans au moins une de leur cellules et supprimer les colonnes qui n'ont pas la valeur 1 dans une cellule.
Exemple si dans la colonne A j'ai A1=0 A2=1 A3=0 il me garde toute la colonne A
Si a l'inverse dans la colonne B B1=0 B2=0 B3=0 alors il me supprime toute la colonne B car aucune cellule n'est = à 1
je joins un fichier pour mieux expliquer
http://www.cijoint.fr/cjlink.php?file=cj201105/cijrtoV6sS.xls
Je te remercie encore pour ta réponse
CDT
Merci pour ta réponse, j'ai testé ce matin ta boucle. Elle supprime toutes les cellules qui n'ont pas la valeur 1. Je me retrouve avec un tableau qu'avec des 1.
J'ai du mal m'exprimer sur mon post ce que je veux c'est garder les colonnes entières qui ont la valeur 1 dans au moins une de leur cellules et supprimer les colonnes qui n'ont pas la valeur 1 dans une cellule.
Exemple si dans la colonne A j'ai A1=0 A2=1 A3=0 il me garde toute la colonne A
Si a l'inverse dans la colonne B B1=0 B2=0 B3=0 alors il me supprime toute la colonne B car aucune cellule n'est = à 1
je joins un fichier pour mieux expliquer
http://www.cijoint.fr/cjlink.php?file=cj201105/cijrtoV6sS.xls
Je te remercie encore pour ta réponse
CDT
Bonjour,
ok, je comprend smieux alors voici le code :
sub suppression ()
j=1
do while cells(1,j) <> "" ' tant que dans ta colonne A tu as une valeur
a=""
i=1
do while cells(i,j) <> "" 'tant que tu as une valeur dans la ligne i et la colonne j
if cells(i,j)= 1 then 'si la celule contient 1 alors la variable a = trouve
a="trouve"
end if
i=i+1
loop
if a ="" then
columns(i).select
Selection.Delete Shift:=xlToLeft
j=j-1
end if
j=i+1 'on va à la colonne suivante
loop
end sub
ok, je comprend smieux alors voici le code :
sub suppression ()
j=1
do while cells(1,j) <> "" ' tant que dans ta colonne A tu as une valeur
a=""
i=1
do while cells(i,j) <> "" 'tant que tu as une valeur dans la ligne i et la colonne j
if cells(i,j)= 1 then 'si la celule contient 1 alors la variable a = trouve
a="trouve"
end if
i=i+1
loop
if a ="" then
columns(i).select
Selection.Delete Shift:=xlToLeft
j=j-1
end if
j=i+1 'on va à la colonne suivante
loop
end sub
rebonjour Melanie1324
malheureusement cele ne fonctionne pas. la macro ne touche pas à mon tableau et elle sélectionne la colonne AG, j'arrive pas à comprendre pourquoi selon ton code elle va se positionner à ce niveau...
merci
malheureusement cele ne fonctionne pas. la macro ne touche pas à mon tableau et elle sélectionne la colonne AG, j'arrive pas à comprendre pourquoi selon ton code elle va se positionner à ce niveau...
merci
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
re, copies ce code et appuies sur F8 et vois ce que ca fait. de temps en temps places ta souris sur a. normalement, sa valeur est "trouve" lorsque dans une cellule c'est 1.
sub suppression ()
j=1
cells(1,j).select
do while cells(1,j) <> "" ' tant que dans ta colonne A tu as une valeur
a=""
i=1
do while cells(i,j) <> "" 'tant que tu as une valeur dans la ligne i et la colonne j
cells(i,j).select
if cells(i,j)= 1 then 'si la celule contient 1 alors la variable a = trouve
a="trouve"
end if
i=i+1
loop
if a ="" then
columns(i).select
Selection.Delete Shift:=xlToLeft
j=j-1
end if
j=i+1 'on va à la colonne suivante
loop
sub suppression ()
j=1
cells(1,j).select
do while cells(1,j) <> "" ' tant que dans ta colonne A tu as une valeur
a=""
i=1
do while cells(i,j) <> "" 'tant que tu as une valeur dans la ligne i et la colonne j
cells(i,j).select
if cells(i,j)= 1 then 'si la celule contient 1 alors la variable a = trouve
a="trouve"
end if
i=i+1
loop
if a ="" then
columns(i).select
Selection.Delete Shift:=xlToLeft
j=j-1
end if
j=i+1 'on va à la colonne suivante
loop
Si j'ai bien compris ton besoin, si dans la colonne A, il y a au moins une cellule égale à 1, on ne la supprime pas.
Ainsi de suite pour toutes les colonnes. si elle n'y touche pas c'est que tu dois avoir dans les colonnes un chiffre 1.
je ne peux pas accéder à ci-joint.fr. Si j'ai mal répondu mets moi deux trois lignes de ton tableau et le résultat attendu :
A b c d
1 1 0 0
résultat attendu/
???
Ainsi de suite pour toutes les colonnes. si elle n'y touche pas c'est que tu dois avoir dans les colonnes un chiffre 1.
je ne peux pas accéder à ci-joint.fr. Si j'ai mal répondu mets moi deux trois lignes de ton tableau et le résultat attendu :
A b c d
1 1 0 0
résultat attendu/
???
oui tu as compris le besoin,
En effet je n'avais pas pensé mais dans mes entêtes de colonnes il y a des 1, il faudrait alors adapter la macro sur uniquement la valeur 1 unique et non 1021 (qui comprend aussi des 1) ou alors la faire démarrer à partir de B5 (ce complique!!!).
cependant même en supprimant les entêtes ce coup ci la macro ne supprime pas les colonnes escomptées et se place à la derniere colonne de mon tableau et tourne sans fin.
Ah non maintenant elle refait le premier résultat (cf message de 10H12).
tableau de départ
A B C D ...
1 0 0 1
0 0 1 0
1 0 1 0
Résultat attendu (colonne B supprimé car pas de 1)
A C D
1 0 1
0 1 0
1 1 0
Merci
En effet je n'avais pas pensé mais dans mes entêtes de colonnes il y a des 1, il faudrait alors adapter la macro sur uniquement la valeur 1 unique et non 1021 (qui comprend aussi des 1) ou alors la faire démarrer à partir de B5 (ce complique!!!).
cependant même en supprimant les entêtes ce coup ci la macro ne supprime pas les colonnes escomptées et se place à la derniere colonne de mon tableau et tourne sans fin.
Ah non maintenant elle refait le premier résultat (cf message de 10H12).
tableau de départ
A B C D ...
1 0 0 1
0 0 1 0
1 0 1 0
Résultat attendu (colonne B supprimé car pas de 1)
A C D
1 0 1
0 1 0
1 1 0
Merci
Il y avait deux erreurs dans mon code maintenant ca devrait être bon :
Sub suppression()
j = 1
Cells(1, j).Select
Do While Cells(1, j) <> "" ' tant que dans ta colonne A tu as une valeur
a = ""
i = 1
Do While Cells(i, j) <> "" 'tant que tu as une valeur dans la ligne i et la colonne j
Cells(i, j).Select
If Cells(i, j) = 1 Then 'si la celule contient 1 alors la variable a = trouve
a = "trouve"
End If
i = i + 1
Loop
If a = "" Then
Columns(j).Select
Selection.Delete Shift:=xlToLeft
j = j - 1
End If
j = j + 1 'on va à la colonne suivante
Loop
End Sub
Sub suppression()
j = 1
Cells(1, j).Select
Do While Cells(1, j) <> "" ' tant que dans ta colonne A tu as une valeur
a = ""
i = 1
Do While Cells(i, j) <> "" 'tant que tu as une valeur dans la ligne i et la colonne j
Cells(i, j).Select
If Cells(i, j) = 1 Then 'si la celule contient 1 alors la variable a = trouve
a = "trouve"
End If
i = i + 1
Loop
If a = "" Then
Columns(j).Select
Selection.Delete Shift:=xlToLeft
j = j - 1
End If
j = j + 1 'on va à la colonne suivante
Loop
End Sub
super merci ça fonctionne, C'est extra.
D'après-toi, est-il possible de lancer la boucle sans faire la recherche sur les entête de lignes et colonnes en gros faire la boucle à partir d'une cellule donnée (ici dans mon cas B5).
Je chercherde mon côté.
Tu m'as bien aidé sur ce coup.
Merci encore
D'après-toi, est-il possible de lancer la boucle sans faire la recherche sur les entête de lignes et colonnes en gros faire la boucle à partir d'une cellule donnée (ici dans mon cas B5).
Je chercherde mon côté.
Tu m'as bien aidé sur ce coup.
Merci encore