IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Macros et VBA Excel Discussion :

Problème avec la méthode Find


Sujet :

Macros et VBA Excel

  1. #1
    Membre éclairé
    Homme Profil pro
    autodidacte
    Inscrit en
    Novembre 2013
    Messages
    517
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : autodidacte
    Secteur : Industrie

    Informations forums :
    Inscription : Novembre 2013
    Messages : 517
    Points : 684
    Points
    684
    Par défaut Problème avec la méthode Find
    Bonjour à tous,

    J'ai un soucis avec la méthode Find.
    J'ai dans ma première ligne des dates au format mmm-aa
    Je cherche à trouver la colonne qui correspond au mois de la date du jour
    j'ai donc ce code:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    Sub test()
    Dim  DC As Long
    Dim C As Range
    Set C = ThisWorkbook.Worksheets("Test").Range("A1:WW1").Find(Format(Date, "mmm-yy", vbMonday, vbFirstFourDays), LookIn:=xlValues, LookAt:=xlWhole, SearchOrder:=xlByRows, SearchDirection:=xlNext, MatchCase:=False)
    If Not C Is Nothing Then DC = C.Column: Set C = Nothing Else MsgBox "Date non trouvée, Etirer les dates de la feuille Test": Exit Sub
    End Sub
    le problème c'est que cela fonctionnait hier mais plus aujourd'hui. J'ai donc cherché a faire
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Set C = ThisWorkbook.Worksheets("Test").Range("A1:WW1").Find(Format(Date -1, "mmm-yy", vbMonday, vbFirstFourDays), LookIn:=xlValues, LookAt:=xlWhole, SearchOrder:=xlByRows, SearchDirection:=xlNext, MatchCase:=False)
    et la ca trouve bien novembre
    ca marche aussi pour octobre mais pas pour septembre par exemple alors que le texte est exactement le même....

    Savez-vous pourquoi svp?
    merci d'avance
    Merci de cliquer sur pour chaque message vous ayant aidé
    puis sur pour clore cette discussion …

    C'est en récoltant les cailloux qu'on te jette que tu construiras ta future estrade...

  2. #2
    Membre émérite
    Inscrit en
    Octobre 2010
    Messages
    1 401
    Détails du profil
    Informations forums :
    Inscription : Octobre 2010
    Messages : 1 401
    Points : 2 684
    Points
    2 684
    Par défaut
    Bonjour.

    Si tu cherches une date dans des cellules qui contiennent des valeurs de type Date, il faut chercher une valeur de type date.

    Voici 2 methodes:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    Sub test()
    Dim DC As Long
    Dim C As Range
    Dim what As Date 'Rechercher une valeur de type date
    Dim r As Range
     
    what = Date
    Set C = ThisWorkbook.Worksheets("Test").Range("A1:WW1").Find(what, LookIn:=xlFormulas, LookAt:=xlWhole, SearchOrder:=xlByRows, SearchDirection:=xlNext, MatchCase:=False)
     
    If Not C Is Nothing Then DC = C.Column: Set C = Nothing Else MsgBox "Date non trouvée, Etirer les dates de la feuille Test": Exit Sub
    End Sub
     
    Sub Boucle()
     
    Dim DC As Long
    Dim C As Range
    Dim what As Date
    Dim r As Range
    Set r = ThisWorkbook.Worksheets("Test").Range("A1:WW1")
     
    what = Date
    For Each C In r
     
     If IsDate(C.Value) Then
      If CDate(C.Value) = what Then
      Exit For
     End If
     End If
    Next
     
    If Not C Is Nothing Then DC = C.Column: Set C = Nothing Else MsgBox "Date non trouvée, Etirer les dates de la feuille Test": Exit Sub
     
     
    End Sub
    Cordialement

    Docmarti.

  3. #3
    Membre éclairé
    Homme Profil pro
    autodidacte
    Inscrit en
    Novembre 2013
    Messages
    517
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : autodidacte
    Secteur : Industrie

    Informations forums :
    Inscription : Novembre 2013
    Messages : 517
    Points : 684
    Points
    684
    Par défaut
    Bonjour Docmarti,

    merci pour ta réponse.

    Hélas cela ne fonctionne pas car je m'explique:
    en plage ("A1:WW1"), il y a des dates au format mmm-yy or l'affichage affiche par exemple déc-16 mais la valeur de la cellule est égale à 01/12/2016
    donc ton code nommé boucle avec une boucle for each ne fonctionne pas aujourd'hui par exemple car what prend la valeur 02/12/2016 et le match ne se fait pas sur 01/12/2016

    idem pour le code via un find en mettant une variable date

    Le truc que je ne comprends pas c'est que le find se fait via mon code pour novembre et octobre par exemple mais pas pour les autres dates alors que tous les formats sont les mêmes
    Merci de cliquer sur pour chaque message vous ayant aidé
    puis sur pour clore cette discussion …

    C'est en récoltant les cailloux qu'on te jette que tu construiras ta future estrade...

  4. #4
    Invité
    Invité(e)
    Par défaut
    Bonjour,
    si je comprends bien tes cellules contiennent des dates et le format de tes cellules est "mmm-yy"

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     Set C = ThisWorkbook.Worksheets("Test").Range("A1:WW1").Find(Format(Date -1, "mmm-yy", vbMonday, vbFirstFourDays), LookIn:=xlText

  5. #5
    Membre éclairé
    Homme Profil pro
    autodidacte
    Inscrit en
    Novembre 2013
    Messages
    517
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : autodidacte
    Secteur : Industrie

    Informations forums :
    Inscription : Novembre 2013
    Messages : 517
    Points : 684
    Points
    684
    Par défaut
    Bonjour dysorthographie,

    C'est exactement ca. Et je pense que le xlText est le plus adapté mais cela ne fonctionne pas avec xltext. J'ai un message d'erreur: l'indice n'appartient pas à la sélection. Je ne sais pas si on peux donner cette valeur à lookin

    Mais pourtant c'est exactement ca qu'il me faut car ca fonctionne avec ce code:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    For Each C In ThisWorkbook.Worksheets("Test").Range("A1:WW1")
        If C.Text = Format(Date, "mmm-yy", vbMonday, vbFirstFourDays) Then DC = C.Column: Exit For
    Next
    C'est donc bien le ".text" qu'il me faut mais comment l'inclure dans un find?
    Merci de cliquer sur pour chaque message vous ayant aidé
    puis sur pour clore cette discussion …

    C'est en récoltant les cailloux qu'on te jette que tu construiras ta future estrade...

  6. #6
    Membre émérite
    Inscrit en
    Octobre 2010
    Messages
    1 401
    Détails du profil
    Informations forums :
    Inscription : Octobre 2010
    Messages : 1 401
    Points : 2 684
    Points
    2 684
    Par défaut
    C'est uniquement pour rechercher la date du jour.


    Pour trouver une autre date, c'est ceci :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    what = CDate("01/12/2016")
    Cordialement

    Docmarti.

Discussions similaires

  1. Problème avec la méthode find
    Par Heuvanek dans le forum Macros et VBA Excel
    Réponses: 10
    Dernier message: 29/06/2015, 09h42
  2. problème avec la méthode find et find next
    Par Sylvie66 dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 10/05/2015, 17h33
  3. Problème avec ma méthode Find
    Par cdurep dans le forum Excel
    Réponses: 2
    Dernier message: 04/03/2014, 10h30
  4. [XL-2010] Problème avec la méthode find d'un objet Range dans une zone filtrée
    Par stargates01 dans le forum Macros et VBA Excel
    Réponses: 10
    Dernier message: 28/02/2014, 23h27
  5. Problème avec la méthode pack()
    Par tomca dans le forum Langage
    Réponses: 5
    Dernier message: 15/09/2005, 10h58

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo