Supprimer colonne contenant valeur donnée
Deepdurden
-
chossette9 Messages postés 6855 Date d'inscription Statut Contributeur Dernière intervention -
chossette9 Messages postés 6855 Date d'inscription Statut Contributeur Dernière intervention -
Bonjour,
Je cherche à supprimer une colonne contenue dans une page si elle contient une valeur que j'ai préalablement rentrée sur une cellule prévue à cet effet, mais sur une autre page.
Je m'explique:
Je rentre 250 dans la cellule A1, feuil1.
Cette valeur est (une seule fois) dans la ligne 2 de la feuille 2.
J'aimerai que la macro trouve la colonne qui contient 250 (qui est systématiquement en ligne 2) et la supprime....
Merci d'avance pour votre aide. Et n'hésitez pas à demander des précisions, c'est plus facile à imaginer qu'à écrire.
Je cherche à supprimer une colonne contenue dans une page si elle contient une valeur que j'ai préalablement rentrée sur une cellule prévue à cet effet, mais sur une autre page.
Je m'explique:
Je rentre 250 dans la cellule A1, feuil1.
Cette valeur est (une seule fois) dans la ligne 2 de la feuille 2.
J'aimerai que la macro trouve la colonne qui contient 250 (qui est systématiquement en ligne 2) et la supprime....
Merci d'avance pour votre aide. Et n'hésitez pas à demander des précisions, c'est plus facile à imaginer qu'à écrire.
A voir également:
- Supprimer colonne contenant valeur donnée
- Supprimer rond bleu whatsapp - Guide
- Déplacer colonne excel - Guide
- Trier colonne excel - Guide
- Supprimer page word - Guide
- Colonne word - Guide
7 réponses
Bonjour,
ta valeur 250 est présente dans une seule colonne sur ta feuille2, ou bien elle peut être présente dans plusieurs colonnes de cette feuille ?
ta valeur 250 est présente dans une seule colonne sur ta feuille2, ou bien elle peut être présente dans plusieurs colonnes de cette feuille ?
Elle est présente dans une seule colonne (c'est un numéro de commande), et toujours sur la même ligne.
Désolé j'avais codé une macro qui me semblait bonne mais en la lançant je me suis rendu compte que ma boucle était infinie :S J'essaierais de revoir ça ce soir, et de te donner un résultat convenable demain matin.
Veux-tu que je te donne quand même ce que j'avais fait pour que tu puisses voir si tu peux résoudre ce petit problème par toi-même ? Ou bien préfères-tu attendre encore un peu ?
Veux-tu que je te donne quand même ce que j'avais fait pour que tu puisses voir si tu peux résoudre ce petit problème par toi-même ? Ou bien préfères-tu attendre encore un peu ?
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
Voilà j'ai résolu mon problème, et finalement il n'y a pas besoin de boucle :
Hier je t'ai parlé d'une boucle qui ne fonctionnait pas c'était pour justement tester que si tu avais une cellule où ta valeur était 32505, la macro ne devait pas la supprimer, et donc passer à la prochaine cellule où elle trouve une valeur contenant 250. Mais avec l'option LookAt:=xlWhole , tu précises que ce que tu cherches est la totalité du contenu de la cellule.
Voilà j'espère que c'est assez clair sinon tu peux redemander des explications.
Sub Macro1()
' Définition d'une variable
Dim val_suppr As Integer
' Cette variable contient la valeur en A1 dans la feuille 1
val_suppr = Sheets("Feuil1").Range("A1").Value
' La macro va sur la feuille 2
Sheets("Feuil2").Select
' La macro effectue une recherche de la valeur, sachant que la valeur recherchée est la totalité du
' contenu de la cellule
Cells.Find(What:=val_suppr, After:=ActiveCell, LookIn:=xlFormulas, LookAt:= _
xlWhole, SearchOrder:=xlByRows, SearchDirection:=xlNext, MatchCase:=False _
, SearchFormat:=False).Activate
'lorsque la macro a trouvé la colonne, elle la supprime automatiquement et décale les autres colonnes vers la gauche
Selection.Delete Shift:=xlToLeft
End Sub
Hier je t'ai parlé d'une boucle qui ne fonctionnait pas c'était pour justement tester que si tu avais une cellule où ta valeur était 32505, la macro ne devait pas la supprimer, et donc passer à la prochaine cellule où elle trouve une valeur contenant 250. Mais avec l'option LookAt:=xlWhole , tu précises que ce que tu cherches est la totalité du contenu de la cellule.
Voilà j'espère que c'est assez clair sinon tu peux redemander des explications.
Voilà la macro :
Cette macro regarde la valeur que tu as mis en A1 de la feuille 1, cherche EXACTEMENT cette valeur dans la feuille 2( grâce à LookAt:=xlWhole qui précise que ce que tu cherches est la totalité du contenu de la cellule, sinon ça plante), et lorsqu'elle a trouvé cette valeur, supprime la colonne et décale les suivantes vers la gauche (si ta valeur était en D, le contenu de la colonne E passe en D, celle de F passe en E etc.)
Voilà, si tu as besoin d'autre chose n'hésite pas à demander.
Sub Macro1()
'
' Macro1 Macro
' Macro enregistrée le 21/04/2009 par ducrot
'
'
Dim val_suppr As Integer
val_suppr = Sheets("Feuil1").Range("A1").Value
Sheets("Feuil2").Select
Cells.Find(What:=val_suppr, After:=ActiveCell, LookIn:=xlFormulas, LookAt:= _
xlWhole, SearchOrder:=xlByRows, SearchDirection:=xlNext, MatchCase:=False _
, SearchFormat:=False).Activate
Selection.Delete Shift:=xlToLeft
End Sub
Cette macro regarde la valeur que tu as mis en A1 de la feuille 1, cherche EXACTEMENT cette valeur dans la feuille 2( grâce à LookAt:=xlWhole qui précise que ce que tu cherches est la totalité du contenu de la cellule, sinon ça plante), et lorsqu'elle a trouvé cette valeur, supprime la colonne et décale les suivantes vers la gauche (si ta valeur était en D, le contenu de la colonne E passe en D, celle de F passe en E etc.)
Voilà, si tu as besoin d'autre chose n'hésite pas à demander.
Voilà la macro (finalement pas besoin de boucle) :
Je voulais au début mettre une boucle, car si on suppose que tu avais une cellule contenant 32505, comment il y a 250 dans 32505, la macrocommande aurait pu supprimer la colonne contenant cette valeur. La boucle servait donc à tester la valeur de la cellule retournée par la recherche.
l'option LookAt:=xlWhole permet de dire que ce que tu cherches est une cellule dont la totalité du contenu correspond à la valeur recherchée. Dans ce cas, la recherche ne te retournera pas la cellule contenant 32505.
Voilà ^^ si tu as besoin d'autres informations n'hésite pas.
Sub Macro1()
'
' Macro1 Macro
' Macro enregistrée le 21/04/2009 par ducrot
'
'
Dim val_suppr As Integer
val_suppr = Sheets("Feuil1").Range("A1").Value
Sheets("Feuil2").Select
Cells.Find(What:=val_suppr, After:=ActiveCell, LookIn:=xlFormulas, LookAt:= _
xlWhole, SearchOrder:=xlByRows, SearchDirection:=xlNext, MatchCase:=False _
, SearchFormat:=False).Activate
Selection.Delete Shift:=xlToLeft
End Sub
Je voulais au début mettre une boucle, car si on suppose que tu avais une cellule contenant 32505, comment il y a 250 dans 32505, la macrocommande aurait pu supprimer la colonne contenant cette valeur. La boucle servait donc à tester la valeur de la cellule retournée par la recherche.
l'option LookAt:=xlWhole permet de dire que ce que tu cherches est une cellule dont la totalité du contenu correspond à la valeur recherchée. Dans ce cas, la recherche ne te retournera pas la cellule contenant 32505.
Voilà ^^ si tu as besoin d'autres informations n'hésite pas.