Chercher si valeur heure existe dans plage

Bonjour/Bonsoir à tout ceux qui me liront !!!

Tout d'abord j’espère que vous avez passer de bonne fêtes et que vous avez était gâter

Je post à nouveau sur ce forum, car je bloque sur un petit bout de code qui me rend fou !!!

Je voudrais que mon code puisse chercher dans une plage définie, si l'une des cellules contient un format hh:mm (peut importe l'heure)

le code ci-dessous fonctionne, car j'ai indiquer la cellule où vérifier mais quand je met range("C1:C500") sa ne fonctionne pas -_-".

If Sheets("TEMP").Range("C91").NumberFormatLocal = "hh:mm" Then

Merci d'avance à ceux qui m’aideront

Peace !

Bonjour

Essaie ce code :

Sub essai()

    For Each c In Sheets("TEMP").Range("C1:C500")
        If c.NumberFormatLocal = "hh:mm" Then
            MsgBox "La ligne recherchée est la ligne " & c.Row
        End If
    Next c
End Sub

Bye !

Slt gmb !

Merci pour la réponse ultra rapide !!

Ton code marche, par contre j'ai modifier ton .Row par un .Address car il me faut la cellule précise

Mais mon problème n'est pas totalement résolu :/ je voudrais utilisé le .address que je récupère comme variable.

Comment puis-je l'intégré a ma ligne de code ? as-tu une idée ?

merci beaucoup

Tu écris :

je voudrais utilisé le .address que je récupère comme variable.

Mais tu as déjà ta cellule comme variable, c'est : c

Il me faudrait plus d'explication pour savoir ce que tu veux faire de cette adresse.

Avec un exemple, peut-être ?

Bye !

Bonjour,

Ma petite contribution, qui pourra peut-être répondre à ta question.

Bonjour gmb,

Bonne année à vous deux.

Cdlt.

Public Sub DEMO()
Dim c As Range, rCell As Range

    Application.ScreenUpdating = False

    For Each c In Worksheets("TEMP").Range("C1:C500")
        If IsNumeric(c) And c.NumberFormatLocal = "hh:mm" Then
            Set rCell = c
        End If
    Next c

    MsgBox "Valeur : " & rCell.Value & Chr(10) _
                   & "Format nombre : " & rCell.NumberFormatLocal & Chr(10) _
                   & "Adresse : " & rCell.Address & Chr(10) _
                   & "Ligne : " & rCell.Row & Chr(10) _
                   & "Colonne : " & rCell.Column

    Set rCell = Nothing

End Sub

Ok je vais te donner un exemple pour que tu puisse un peut mieux comprendre mes attentes

Voici un exemple de code qui contient en ce qui me concerne enfaite une double condition

Sub hello()
  For ligne = 1 To 500
If Right(Sheets("Feuil5").Cells(ligne, 1), 5) = "hello" Then

        For Each c In Sheets("Feuil5").Range("C1:C500")
            If c.NumberFormatLocal = "hh:mm" Then
            Sheets("Feuil5").Range("I8") = Sheets("Feuil5").Cells(ligne, 2)
            Else
            Sheets("Feuil5").Range("I8") = Sheets("Feuil5").Cells(ligne, 4)
            End If
        Next c
    End If
Exit For
Next
End Sub

je voudrais que quand la première conditions est vrai (hello) et qu'une des cellules de la plage (C1:C500) et une valeur horaire, sa me renvois en l’occurrence Sheets("Feuil5").Cells(ligne, 2) dans Sheets("Feuil5").Range("I8").

Le problème est que je veux que mon renvoie d'information de cellule se réfère a la première conditions c'est à dire que je veux qu'il aille chercher les cellules autour de hello et non de celle où il y a le format horaire :/

j'espère être assez claire :S

qu'elle trifouillage de code !! lol

merci encore de ton aide


slt jean-eric !! merci beaucoup bonne année à toi aussi

Comme tu peut le voir dans mon dernier post, le but de la condition qui recherche s'il existe ou non une valeur horaire dans la plage C1:C500 et de lancer derrière un renvoie d'information dans une cellule.

Or sa ne marche pas -_-, enfaite la variable c.address je n'en ai pas besoin vu que l’exécution du renvoi d'information se fait si la vérification est vrai donc...

j'ai loupé quelque chose ?

Bonjour

Et désolé mais, même avec ton exemple, je ne comprends pas ce que tu veux faire.

Bye !

Slt gmb, ok je vais essayé de simplifié encore plus en faisant uniquement le code pour une feuil active

dans le code qui suis, je vais vous expliquez ce que je voudrais faire

Si le premier IF trouve "hello" dans la première colonne alors il lance le second IF.

ensuite je voudrais que le second IF me renvoi B2 dans I8 uniquement si dans la plage C1:C500 il trouve une cellule contenant un format hh:mm. sinon il me renvoie B3 dans I8.

ce code devrais fonctionné, sauf erreur de ma part. mais ce n'est pas le cas :/ (donc il y a une erreur)

Sub hello()
  For ligne = 1 To 500
If Right(Sheets("Feuil5").Cells(ligne, 1), 5) = "hello" Then

        For Each c In Sheets("Feuil5").Range("C1:C500")
            If c.NumberFormatLocal = "hh:mm" Then
            Range("I8") = Range("B2")
            Else
            Range("I8") = Range("B3")
            End If
        Next c
    End If
Exit For
Next
End Sub

thx

Plutôt que de m’expliquer un code qui ne marche pas, il serait peut-être plus judicieux d’essayer de m’expliquer, avec un exemple sur une feuille de calcul :

ce que tu as au départ,

ce que tu veux obtenir

et à quelles conditions

Je pense que si j’arrive à comprendre ça, la macro, j’en ferai mon affaire…

OK ?

Merci gmb de ton aide !

je joint un fichier d'exemple

tu pourras voir que quand tu clic sur le bouton le hello n'est pas trouvé :/ alors qu'il est bien dans la colonne A

merci

16hello.xlsm (18.96 Ko)

Re,

A tester sans grande conviction.

Cdlt.

Public Sub hello()
Dim ligne As Long
Dim c As Range

    Application.ScreenUpdating = False

    Range("I8") = Range("E3")

    For ligne = 1 To 100
        If Left(Cells(ligne, 1), 5) = "hello" Then
            For Each c In Range("C1:C100")
                If IsNumeric(c) And c.NumberFormatLocal = "hh:mm" Then
                    Range("I8") = Range("E2")
                    Exit For
                End If
            Next c
        End If
    Next

End Sub

Bonjour Jean-Eric

@tr3nk1l

Un essai à tester. Te convient-il ?

Bye !

31hello-v1.xlsm (19.93 Ko)

comme ça ton fichier répond a mes attentes, mais je veux paré a toute éventualité

donc pour bien faire, dans le for each tu cherche si dans la plage C1:C500 il y a une cellule au format hh:mm ça sa marche,

mais est-il possible en + de tester (si une cellule a le format hh:mm) si dans la cellule il y a une heure de rentré ?

car là si on trouve hello et que effectivement une cellule a le format hh:mm mais qu'elle est vide je voudrais que sa me mette "hello ou une horaire n'ont pas était trouver"

merci de votre aide gmb et jean-eric ! on va y arrivé !! 8)

RE,

Depuis le départ, mes propositions prennent en compte cette éventualité [IsNumeric(c)].

Cdlt.

Jean-Eric a écrit :

RE,

Depuis le départ, mes propositions prennent en compte cette éventualité [IsNumeric(c)].

Cdlt.

effectivement j'ai bien vu tes codes, mais même en aillant modifier comme ceci

 If IsNumeric(c) And c.NumberFormatLocal = "hh:mm" Then

sa m'affiche quand meme qu'il a trouver une heure meme si la case est vide :/

Nouvel essai.

Bye !

29hello-v2.xlsm (20.02 Ko)

Re,

Modifie ainsi :

If IsNumeric(c) And c.Value > 0 And c.NumberFormatLocal = "hh:mm" Then

Perfect à vous !!! 2 code un chouilla différent qui font le même boulot c'est good 8)

franchement merci beaucoup à vous d'avoir pris du temps pour m'aider !

je ne clôture pas le post maintenant, car je dois adapter à mon code initial et si j'ai un problème sa m'évitera de re-créer un post pour le même soucis !

encore à vous 2 ! et surtout une bonne année !!

Re hello a tous !!!

Alors j'ai réussi a adapter le code pour mes besoins, par contre je voulais savoir si en partant du dernier fichier posté par gmb (hello v2.xlsm) on pouvais faire en sorte que quand il trouve une heure dans une cellule, il test aussi si il y a une heure dans les 3 en dessous ??

Merci d'avance !!!

Peace !

Bonjour

Avec ton fichier squelettique et tes chétives explications, il m’est difficile de faire mieux.

Aide-toi et on t’aidera !

Bye !

Rechercher des sujets similaires à "chercher valeur heure existe plage"