Excel 2007 supprimer colonne
Résolu/Fermé
VG13
Messages postés
20
Date d'inscription
mardi 15 mars 2011
Statut
Membre
Dernière intervention
20 mai 2011
-
19 mai 2011 à 14:52
VG13 Messages postés 20 Date d'inscription mardi 15 mars 2011 Statut Membre Dernière intervention 20 mai 2011 - 20 mai 2011 à 15:43
VG13 Messages postés 20 Date d'inscription mardi 15 mars 2011 Statut Membre Dernière intervention 20 mai 2011 - 20 mai 2011 à 15:43
A voir également:
- Excel 2007 supprimer colonne
- Déplacer une colonne excel - Guide
- Supprimer une page word - Guide
- Supprimer compte instagram - Guide
- Liste déroulante excel - Guide
- Additionner colonne excel - Guide
10 réponses
melanie1324
Messages postés
1505
Date d'inscription
vendredi 25 mai 2007
Statut
Membre
Dernière intervention
31 janvier 2018
154
19 mai 2011 à 16:51
19 mai 2011 à 16:51
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
VG13
Messages postés
20
Date d'inscription
mardi 15 mars 2011
Statut
Membre
Dernière intervention
20 mai 2011
20 mai 2011 à 09:24
20 mai 2011 à 09:24
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
melanie1324
Messages postés
1505
Date d'inscription
vendredi 25 mai 2007
Statut
Membre
Dernière intervention
31 janvier 2018
154
20 mai 2011 à 09:55
20 mai 2011 à 09:55
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
VG13
Messages postés
20
Date d'inscription
mardi 15 mars 2011
Statut
Membre
Dernière intervention
20 mai 2011
20 mai 2011 à 10:12
20 mai 2011 à 10:12
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
melanie1324
Messages postés
1505
Date d'inscription
vendredi 25 mai 2007
Statut
Membre
Dernière intervention
31 janvier 2018
154
20 mai 2011 à 11:25
20 mai 2011 à 11:25
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
melanie1324
Messages postés
1505
Date d'inscription
vendredi 25 mai 2007
Statut
Membre
Dernière intervention
31 janvier 2018
154
20 mai 2011 à 11:29
20 mai 2011 à 11:29
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/
???
VG13
Messages postés
20
Date d'inscription
mardi 15 mars 2011
Statut
Membre
Dernière intervention
20 mai 2011
20 mai 2011 à 13:26
20 mai 2011 à 13:26
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
melanie1324
Messages postés
1505
Date d'inscription
vendredi 25 mai 2007
Statut
Membre
Dernière intervention
31 janvier 2018
154
20 mai 2011 à 14:53
20 mai 2011 à 14:53
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
VG13
Messages postés
20
Date d'inscription
mardi 15 mars 2011
Statut
Membre
Dernière intervention
20 mai 2011
20 mai 2011 à 15:08
20 mai 2011 à 15:08
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
melanie1324
Messages postés
1505
Date d'inscription
vendredi 25 mai 2007
Statut
Membre
Dernière intervention
31 janvier 2018
154
20 mai 2011 à 15:38
20 mai 2011 à 15:38
bonjour,
bien sur :
il suffit que tu remplaces i=1 par i= 5
et j = 1 par j = 2
bien sur :
il suffit que tu remplaces i=1 par i= 5
et j = 1 par j = 2
VG13
Messages postés
20
Date d'inscription
mardi 15 mars 2011
Statut
Membre
Dernière intervention
20 mai 2011
20 mai 2011 à 15:43
20 mai 2011 à 15:43
Bein sur c'était évident... desfois on est vraimment trop nul !!!
MERCI t'est génial
Bon weekend
Je marque le post comme résolu
MERCI t'est génial
Bon weekend
Je marque le post comme résolu