Methode find avec boucle FOR

Bonjour,

Mon problème est assez simple à première vu, j'ai ce tableau excel en PJ.

Je voudrais appliquer la méthode Find pour rattacher la à chaque date du calendrier sa disponibilité dur la colonne.

avec le code ci-dessous, je trouve bien la première colonne du jour mais ne n'arrive pas à faire une boucle sur tout les éléments trouvés pour faire correspondre ne jour au mois. lorsque je relance la recherche, elle s'arrête toujours à la première valeur trouvée.

Quelqu'un aurait'il une Idée svp?

Merci au forum.

Dim sysdate As Date
sysdate = Format(DateSerial(Year(Date), Month(Date), Day(Date)), "dd/mm/yyyy")
a = Year(Date)
b = Month(Date)
c = Day(Date)
   Valeur_Cherchee = c
   Set Plage = Feuil25.Range("D7:O44")
    'Set trouve = Plage.Cells.Find(what:=Valeur_Cherchee, lookAT:=xlWhole)
     If Not trouve Is Nothing Then
   o = trouve.Column
   If Feuil25.Cells(1, o) <> b Then
   Set trouve = Plage.Cells.Find(what:=Valeur_Cherchee, lookAT:=xlWhole)
   o = trouve.Column
   End If
   End If

Bonjour,

En complément de la méthode Find, il en existe une autre qui se nomme FindNext (si, si ! ) ... dont je te laisse deviner ce qu'elle fait. L'aide en ligne contient même un petit exemple qu'il ne te reste qu'à adapter!

j'ai trouvé ce code

Sub Principale()
Dim Plage As Range
Dim Lignes(), i As Long
Dim Texte As String
Dim Flag As Boolean

Set Plage = Sheets("Feuil1").Range("A1:A20") 'plage de recherche
Texte = "mot"   'expression cherchée
Flag = Find_Next(Plage, Texte, Lignes())  'appel de la fonction
If Flag Then  'si fonction retourne Vrai = expression trouvée dans la plage
    For i = LBound(Lignes) To UBound(Lignes)   'restitution des lignes correspondantes
        Debug.Print Lignes(i)
    Next i
Else
    MsgBox "L'expression : " & Texte & " n'a pas été trouvée dans la plage : " & Plage.Address
End If
End Sub

mais j'ai une erreur sur Find_Next (fontion non defini) j'ai essayé de le déclarer comme variable long mais il ne fonctionne tjrs pas

as tu un exemple de code qui fonctionne stp?

Merci,

Re-bonjour,

Ton Find_Next semblerait plutôt correspondre à une fonction personnalisée ... dont nous n'avons pas le code. Il figure peut-être au même endroit que ce que tu as trouvé ?

Je te suggère de commencer par expliquer ce que tu cherches à faire. J'ai déjà eu un peu de mal à "lire" ton calendrier, en regardant ton code, ça ne m'a pas vraiment aidé et donc trouver un code qui fonctionne ...

Tu veux simplement repérer la cellule correspondant à la date du jour

C'est bon je viens de trouver un moyen de contourner la boucle !

Effectivement je voulais trouver la cellule correspondant à la date du jour.

Cà marche en faisant une recherche en 2 temps d'abord sur les colonnes puis sur les lignes

Dim sysdate As Date
sysdate = Format(DateSerial(Year(Date), Month(Date), Day(Date)), "dd/mm/yyyy")
a = Month(Date)
b = Day(Date)
   Valeur_Cherchee = a
   Set Plage = Feuil25.Range("D7:O44")
    Set trouve = Plage.Cells.Find(what:=Valeur_Cherchee, lookAT:=xlWhole)
     If Not trouve Is Nothing Then
   o = trouve.Column
   Valeur_Cherchee = b
   Set Plage = Feuil25.Range(Feuil25.Cells(7, o), Feuil25.Cells(44, o))
   Set trouve = Plage.Cells.Find(what:=Valeur_Cherchee, lookAT:=xlWhole)
   o = trouve.Row
   End If

C'est nickel !

merci pour ton aide

C'est bon je viens de trouver

J'en suis fort aise comme aurait dit certaine fourmi un peu prétentieuse mais sans doute qu'en outre, ton fichier réel ne correspond pas à celui que tu as déposé (sinon je ne vois pas comment ceci
Set Plage = Feuil25.Range("D7:O44")
Set trouve = Plage.Cells.Find(what:=Valeur_Cherchee, lookAT:=xlWhole)

pourrait fonctionner )

Tu as raison ne n'ai pas mis le fichier intégral.

Dans le cas d'espèce c'est plutôt

Set Plage = Feuil1.Range("D3:O44")
Set trouve = Plage.Cells.Find(what:=Valeur_Cherchee, lookAT:=xlWhole)
Rechercher des sujets similaires à "methode find boucle"