Vba : selection de cellules sous condition

Fermé
Aroeris - 21 janv. 2009 à 16:27
 Aroeris - 4 févr. 2009 à 17:35
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

10 réponses

xav3601 Messages postés 3288 Date d'inscription lundi 10 novembre 2008 Statut Membre Dernière intervention 2 mars 2016 311
21 janv. 2009 à 16:38
Tu veux en faire quoi apres de ces lignes?
0
A pardon, j'ai oublier de le preciser, les supprimmer tout betement :)
0
xav3601 Messages postés 3288 Date d'inscription lundi 10 novembre 2008 Statut Membre Dernière intervention 2 mars 2016 311
21 janv. 2009 à 23:27
Ok alors j'aurais une solution a te proposer; je te posterai ca demain dans la journée ;)
0
xav3601 Messages postés 3288 Date d'inscription lundi 10 novembre 2008 Statut Membre Dernière intervention 2 mars 2016 311
22 janv. 2009 à 08:06
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.
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
mikebzh Messages postés 127 Date d'inscription samedi 20 décembre 2008 Statut Membre Dernière intervention 11 mars 2009 28
22 janv. 2009 à 08:34
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.
0
Bonjour, desolé de vous repondre si tardivement mais je n'ai pas vraiment eu le temps de me pencher sur vos solutions appart aujourd'hui
Tout d'abord merci de votre aide, j'apprecié
Pourriez vous cependant m'expliquer vos lignes de codes ? car je ne comprend pas tres bien la "maniere".
Merci
0
xav3601 Messages postés 3288 Date d'inscription lundi 10 novembre 2008 Statut Membre Dernière intervention 2 mars 2016 311
28 janv. 2009 à 16:00
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
0
mikebzh Messages postés 127 Date d'inscription samedi 20 décembre 2008 Statut Membre Dernière intervention 11 mars 2009 28
28 janv. 2009 à 19:06
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.
0
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
0
mikebzh Messages postés 127 Date d'inscription samedi 20 décembre 2008 Statut Membre Dernière intervention 11 mars 2009 28
4 févr. 2009 à 16:49
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.
0
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
0