Vba : selection de cellules sous condition
Aroeris
-
Aroeris -
Aroeris -
Bonjour,
je cherche a selectionné une plage de cellules dont la premiere colonne de chaque ligne correspond a la valeur contenue dans ma variable "mois"
J'ai commencé a tapper ce code en bidouillant un peu avec l'aide en ligne d'excel mais là j'avoue que je trouve mes limites :
Public Sub Verification(ByVal mois)
Sheets(Resum).Select -Resum est le nom d'un onglet-
Dim cpt As Integer
cpt = ActiveSheet.UsedRange.Rows.Count
For Each c In Worksheets("Resum").Range("A1:A" & cpt).Cells
If c.Value = mois.Value Then
'selectionner toute les ligne ayant la valeur mois egale a leur contenue
Si vous pouviez m'aider à la compléter et ou a la corriger, je vous en serai tres reconnaissant.
Cordialement
je cherche a selectionné une plage de cellules dont la premiere colonne de chaque ligne correspond a la valeur contenue dans ma variable "mois"
J'ai commencé a tapper ce code en bidouillant un peu avec l'aide en ligne d'excel mais là j'avoue que je trouve mes limites :
Public Sub Verification(ByVal mois)
Sheets(Resum).Select -Resum est le nom d'un onglet-
Dim cpt As Integer
cpt = ActiveSheet.UsedRange.Rows.Count
For Each c In Worksheets("Resum").Range("A1:A" & cpt).Cells
If c.Value = mois.Value Then
'selectionner toute les ligne ayant la valeur mois egale a leur contenue
Si vous pouviez m'aider à la compléter et ou a la corriger, je vous en serai tres reconnaissant.
Cordialement
A voir également:
- Vba : selection de cellules sous condition
- Excel compter cellule couleur sans vba - Guide
- Incompatibilité de type vba ✓ - Forum VB / VBA
- Erreur 13 incompatibilité de type VBA excel ✓ - Forum Excel
- Mkdir vba ✓ - Forum VB / VBA
- Dépassement de capacité vba ✓ - Forum Excel
10 réponses
alors tu peux utiliser cette fonction:
Set result = Range("A2:A10000").Find(What:=mois, LookIn:=xlValues, lookat:=xlWhole)
ligne = Sheets(Feuil1.Name).Rows.Find(What:=mois, LookIn:=xlValues, lookat:=xlWhole).Row
en remplacant le range par la zone dans laquelle tu veux chercher!
La premiere te permet de savoir si ta variable est presente et la deuxieme te renvoi la ligne
par la suite il faut rajouter une boucle autour afin qu'il te trouve toute tes occurences.
Set result = Range("A2:A10000").Find(What:=mois, LookIn:=xlValues, lookat:=xlWhole)
ligne = Sheets(Feuil1.Name).Rows.Find(What:=mois, LookIn:=xlValues, lookat:=xlWhole).Row
en remplacant le range par la zone dans laquelle tu veux chercher!
La premiere te permet de savoir si ta variable est presente et la deuxieme te renvoi la ligne
par la suite il faut rajouter une boucle autour afin qu'il te trouve toute tes occurences.
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
Coucou
Un truc du style pourrait-il te convenir ?
[code]
........
Dim donnees As Range
Dim nligne As Integer
Dim feuille As Worksheet
Set feuille = Worksheets("Resum")
Set donnees = Range(feuille.Cells(1, 1), feuille.Cells(1, 1).SpecialCells(xlLastCell))
For nligne = donnees.Rows.Count To 1 Step -1
If Month(donnees.Rows(nligne).Cells(1, 1).Value) = Month(mois) Then
donnees.Rows(nligne).Delete
End If
Next
........
[\code]
Reste à définir la variable mois
A plus.
Un truc du style pourrait-il te convenir ?
[code]
........
Dim donnees As Range
Dim nligne As Integer
Dim feuille As Worksheet
Set feuille = Worksheets("Resum")
Set donnees = Range(feuille.Cells(1, 1), feuille.Cells(1, 1).SpecialCells(xlLastCell))
For nligne = donnees.Rows.Count To 1 Step -1
If Month(donnees.Rows(nligne).Cells(1, 1).Value) = Month(mois) Then
donnees.Rows(nligne).Delete
End If
Next
........
[\code]
Reste à définir la variable mois
A plus.
Set result = Range("A2:A10000").Find(What:=mois, LookIn:=xlValues, lookat:=xlWhole) fais une recherche sur toute la zone A2 a A100000 et cherche le contenu de la textebox mois
ligne = Sheets(Feuil1.Name).Rows.Find(What:=mois, LookIn:=xlValues, lookat:=xlWhole).Row une fois quîl a trouver il selectionne la ligne
ligne = Sheets(Feuil1.Name).Rows.Find(What:=mois, LookIn:=xlValues, lookat:=xlWhole).Row une fois quîl a trouver il selectionne la ligne
Coucou,
Voilà quelques explications
[code]
........
Dim donnees As Range 'on définit notre future zone de travail
Dim nligne As Integer 'variable qui va nous servir à gérer une ligne
Dim feuille As Worksheet 'feuille de travail
Set feuille = Worksheets("Resum") 'on selectionne la bonne feuille
'maintenant on définit la zone de travail donnees cad toute la zone jusqu à la
dernière où on a des infos
Set donnees = Range(feuille.Cells(1, 1), feuille.Cells(1, 1).SpecialCells(xlLastCell))
'on va maintenant partir de la derniere ligne et remonter
For nligne = donnees.Rows.Count To 1 Step -1
'si la cellule 1 de la ligne correspond au bon mois
If Month(donnees.Rows(nligne).Cells(1, 1).Value) = Month(mois) Then
'alors on la détruit
donnees.Rows(nligne).Delete
End If
'on repart pour la ligne suivante
Next
'ici on a fini on a tout remonté
........
[\code]
Ici le seul truc que tu as a gérer c'est la variable mois car je ne sais pas comment tu as fait,
de plus je me sert de la fonction month() de visual basic car j'ai considéré que tes
premières cellules étaient du type date, mais cela n'est peut-être pas le cas.
Si tu as vraiment un soucis n'hésites pas à demander.
A plus.
Voilà quelques explications
[code]
........
Dim donnees As Range 'on définit notre future zone de travail
Dim nligne As Integer 'variable qui va nous servir à gérer une ligne
Dim feuille As Worksheet 'feuille de travail
Set feuille = Worksheets("Resum") 'on selectionne la bonne feuille
'maintenant on définit la zone de travail donnees cad toute la zone jusqu à la
dernière où on a des infos
Set donnees = Range(feuille.Cells(1, 1), feuille.Cells(1, 1).SpecialCells(xlLastCell))
'on va maintenant partir de la derniere ligne et remonter
For nligne = donnees.Rows.Count To 1 Step -1
'si la cellule 1 de la ligne correspond au bon mois
If Month(donnees.Rows(nligne).Cells(1, 1).Value) = Month(mois) Then
'alors on la détruit
donnees.Rows(nligne).Delete
End If
'on repart pour la ligne suivante
Next
'ici on a fini on a tout remonté
........
[\code]
Ici le seul truc que tu as a gérer c'est la variable mois car je ne sais pas comment tu as fait,
de plus je me sert de la fonction month() de visual basic car j'ai considéré que tes
premières cellules étaient du type date, mais cela n'est peut-être pas le cas.
Si tu as vraiment un soucis n'hésites pas à demander.
A plus.
Bonjour,
Je vous remercie pour vos reponses !
Ma variable mois et une string, qui initialiser dans "un programme principale" donc votre procedure doit avoir mois en paramètre en faite, seulement je n'utilise pas de données de type "month", mes cellules sont de type basic si je puis dire en faite,
mais je vous avoue que je suis assez perdue sur cette procedure...
PS : la solution de xav ne fonctionne pas chez moi non plus (lol)
voila voila
merci de votre aide
Je vous remercie pour vos reponses !
Ma variable mois et une string, qui initialiser dans "un programme principale" donc votre procedure doit avoir mois en paramètre en faite, seulement je n'utilise pas de données de type "month", mes cellules sont de type basic si je puis dire en faite,
mais je vous avoue que je suis assez perdue sur cette procedure...
PS : la solution de xav ne fonctionne pas chez moi non plus (lol)
voila voila
merci de votre aide
Si tu peux poster ton fichier sur le site www.cijoint.fr et nous donner le lien, on verra ce que l'on peut faire.
Euh mettre le fichier entier je ne peux pas, car je fais cela dans le cadre de mon stage et non pas que les informations soit top secret mais je ne peux pas les mettre en ligne comme ça ...
Je peux par contre faire un screen de la totalité de mon code
http://www.cijoint.fr/cjlink.php?file=cj200902/cijLOWkHS1.jpg //screen
http://www.cijoint.fr/cjlink.php?file=cj200902/cijO7P5y2V.rtf //sous bloque note
Je peux par contre faire un screen de la totalité de mon code
http://www.cijoint.fr/cjlink.php?file=cj200902/cijLOWkHS1.jpg //screen
http://www.cijoint.fr/cjlink.php?file=cj200902/cijO7P5y2V.rtf //sous bloque note