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 :

FIND sur DATE incompréhensible.


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éprouvé Avatar de Zebulon777
    Homme Profil pro
    Informaticien
    Inscrit en
    Février 2005
    Messages
    1 327
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 58
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Informaticien

    Informations forums :
    Inscription : Février 2005
    Messages : 1 327
    Par défaut FIND sur DATE incompréhensible.
    Bonjour tout le monde,

    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
     
    WMemo_Date = CDate("01/" & G_MOIS & "/" & G_ANNEE)
    WTrouve = False
    WLig_Trouve = 0
    Dim OBJ_FICCOM As Object
    'cherche l'occurence dans la colonne 1
    Set OBJ_FICCOM = Columns(1).Find(WMemo_Date, LookIn:=xlValues)
    'Si elle est trouvé, renseigne WLig_Trouve avec le N° de ligne
    If Not OBJ_FICCOM Is Nothing Then
    WTrouve = True
    WLig_Trouve = OBJ_FICCOM.Row
    Else
    WTrouve = False
    WLig_Trouve = 0
    End If
    Voici donc le code que j'utilise pour retrouver une date dans la première colonne de ma feuille.
    La variable G_MOIS contient "01", donc je cherche le 01/01/2011.
    Mais, en mode débuggage, le SET me positionne systématiquement sur le 01/11/2011.
    (La colonne est bien au format DATE).
    Incompréhensible, vous dis-je
    Bon, bref, j'espère que vous allez pouvoir m'aider, parce que je suis entrain de craquer.

  2. #2
    Expert éminent Avatar de mercatog
    Homme Profil pro
    Inscrit en
    Juillet 2008
    Messages
    9 435
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Autre

    Informations forums :
    Inscription : Juillet 2008
    Messages : 9 435
    Par défaut
    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
    Dim WMemo_Date As Date
    Dim OBJ_FICCOM As Range
    Dim WTrouve As Boolean
    Dim WLig_Trouve As Long
    Dim G_MOIS As Byte
    Dim G_ANNEE As Integer
     
    G_MOIS = 1
    G_ANNEE = 2011
     
    WMemo_Date = CDate("01/" & G_MOIS & "/" & G_ANNEE)
    'cherche l'occurence dans la colonne 1
    Set OBJ_FICCOM = Worksheets("Feuil1").Range("A:A").Find(WMemo_Date, LookIn:=xlFormulas)
    'Si elle est trouvé, renseigne WLig_Trouve avec le N° de ligne
    If Not OBJ_FICCOM Is Nothing Then
        WTrouve = True
        WLig_Trouve = OBJ_FICCOM.Row
        Set OBJ_FICCOM = Nothing
    Else
        WTrouve = False
        WLig_Trouve = 0
    End If

  3. #3
    Membre éprouvé Avatar de Zebulon777
    Homme Profil pro
    Informaticien
    Inscrit en
    Février 2005
    Messages
    1 327
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 58
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Informaticien

    Informations forums :
    Inscription : Février 2005
    Messages : 1 327
    Par défaut
    Merci, mais ça ne fonctionne pas.
    Avec ta méthode, ça me renvoie systématiquement "Nothing" alors que la valeur existe bien.

  4. #4
    Expert éminent Avatar de mercatog
    Homme Profil pro
    Inscrit en
    Juillet 2008
    Messages
    9 435
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Autre

    Informations forums :
    Inscription : Juillet 2008
    Messages : 9 435
    Par défaut
    Tes dates en colonne A sont issues de formules ou écrites en dur et quel est leur format?

  5. #5
    Membre éprouvé Avatar de Zebulon777
    Homme Profil pro
    Informaticien
    Inscrit en
    Février 2005
    Messages
    1 327
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 58
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Informaticien

    Informations forums :
    Inscription : Février 2005
    Messages : 1 327
    Par défaut
    C'est un fichier CSV que je charge, donc elles sont bien en dur et quand je regarde le format des cellules, j'ai bien "Date".

  6. #6
    Inactif  

    Homme Profil pro
    cuisiniste
    Inscrit en
    Avril 2009
    Messages
    15 374
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : cuisiniste
    Secteur : Bâtiment

    Informations forums :
    Inscription : Avril 2009
    Messages : 15 374
    Billets dans le blog
    8
    Par défaut heu...!!!
    bonjour

    a tout hazard

    si tu a mi ta date dans ta cellule avec l'outil formule


    tu a peut etre un espace devant la date
    j'ai le meme probleme chez moi avec 2007

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    Set OBJ_FICCOM = Worksheets("Feuil1").Range("A:A").Find(" " & WMemo_Date, LookIn:=xlFormulas
    au plaisir
    mes fichiers dans les contributions:
    mail avec CDO en vba et mail avec CDO en vbs dans un HTA
    survol des bouton dans userform
    prendre un cliché d'un range

    si ton problème est résolu n'oublie pas de pointer : : ça peut servir aux autres
    et n'oublie pas de voter

  7. #7
    Membre éprouvé Avatar de Zebulon777
    Homme Profil pro
    Informaticien
    Inscrit en
    Février 2005
    Messages
    1 327
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 58
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Informaticien

    Informations forums :
    Inscription : Février 2005
    Messages : 1 327
    Par défaut
    re bonjour,

    j'ai encore une incompatibilité de type sur :

    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
     
            WTexteAChercher = "NC"
            WTrouve = False
            WLig_Trouve = 0
            Dim OBJ_NC_1 As Object
            'cherche l'occurence dans la colonne 1
    ''''''''''        Set OBJ_NC_1 = Range(Cells(WPremLigSEM, 13), Cells(WDernLigSEM, 13)).Find(WTexteAChercher, LookIn:=xlValues)
            With Sheets(P_FeuilleTraficAnnuel)
                Set OBJ_NC_1 = .Range(Cells(WPremLigSEM, 13), Cells(WDernLigSEM, 13)).Find(What:=WTexteAChercher, After:=.Range(Cells(WPremLigSEM, 13), Cells(WDernLigSEM, 13)), LookIn:=xlValues, LookAt:=xlWhole, SearchOrder:=xlByColumns, _
                    SearchDirection:=xlNext, MatchCase:=False, SearchFormat:=True)
            End With
            'Si elle est trouvée, renseigne WLig_Trouve avec le N° de ligne
            'Si elle n'est pas trouvée => insérer une ligne.
            If Not OBJ_NC_1 Is Nothing Then
                WTrouve = True
                WLig_Trouve = OBJ_NC_1.Row
            Else
                WTrouve = False
                WLig_Trouve = 0
            End If
            Set OBJ_NC_1 = Nothing
    et je n'arrive pas à trouver d'où cela peux venir ?

  8. #8
    Expert confirmé
    Avatar de Didier Gonard
    Homme Profil pro
    Formateur Office et développeur VBA en freelance
    Inscrit en
    Février 2008
    Messages
    2 805
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Formateur Office et développeur VBA en freelance

    Informations forums :
    Inscription : Février 2008
    Messages : 2 805
    Par défaut
    Bonjour,

    A tout les coups la recherche ne se produit pas à l'endroit voulu, souci de cellule active, de désignations de plages etc...

    Cherche de ce côté là....

    cordialement,

    Didier

  9. #9
    Expert éminent


    Profil pro
    Inscrit en
    Juin 2003
    Messages
    14 008
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 14 008
    Par défaut
    pourquoi une plage pour le paramètre After :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    After:=.Range(Cells(WPremLigSEM, 13), Cells(WDernLigSEM, 13))
    Il manque aussi le point (.) devant tes objets Cells ... comme pour les Range, Columns.. si tu ne met pas le point tu ne précise pas la feuille et donc tu agit sur sa feuille active avec tous les risques que cela comporte (quelqu'un peu changer de feuille/classeur durant le déroulement de ta macro..)

    pour after essai :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    After:=.Cells(WPremLigSEM, 13)
    et n'oublie pas de rajouter le point devant tes autres Cells...

  10. #10
    Membre éprouvé Avatar de Zebulon777
    Homme Profil pro
    Informaticien
    Inscrit en
    Février 2005
    Messages
    1 327
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 58
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Informaticien

    Informations forums :
    Inscription : Février 2005
    Messages : 1 327
    Par défaut
    Dans le "After", ce n'est pas la zone de recherche qu'il faut mettre ?

    Bon, je viens de tester ça :

    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
     
                WTexteAChercher = "NC"
                WTrouve = False
                WLig_Trouve = 0
                Dim OBJ_NC_1 As Object
                'cherche l'occurence dans la colonne 1
    ''''''''''            Set OBJ_NC_1 = Range(Cells(WPremLigMois, 3), Cells(WDernLigMois, 3)).Find(WTexteAChercher, LookIn:=xlValues)
                With Sheets(P_FeuilleTraficAnnuel)
                    Set OBJ_NC_1 = .Range(.Cells(WPremLigMois, 3), .Cells(WDernLigMois, 3)).Find(What:=WTexteAChercher, After:=.Range(.Cells(WPremLigMois, 3)), LookIn:=xlValues, LookAt:=xlWhole, SearchOrder:=xlByColumns, _
                        SearchDirection:=xlNext, MatchCase:=False, SearchFormat:=True)
                End With
                'Si elle est trouvée, renseigne WLig_Trouve avec le N° de ligne
                'Si elle n'est pas trouvée => insérer une ligne.
                If Not OBJ_NC_1 Is Nothing Then
                    WTrouve = True
                    WLig_Trouve = OBJ_NC_1.Row
                Else
                    WTrouve = False
                    WLig_Trouve = 0
                End If
                Set OBJ_NC_1 = Nothing
    et j'obtiens l'erreur "1004 : erreur définie par l'application ou par l'objet".

    C'est fou, je vais jamais m'en sortir de ce truc...

    Ps : pour info, je précise que la ligne 7 du code fonctionne, mais je voulais faire les choses dans les règles.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [XL-2010] Méthode Find sur des dates
    Par silver64 dans le forum Excel
    Réponses: 3
    Dernier message: 16/03/2012, 20h36
  2. [Toutes versions] Confusion de résultats dans recherche des occurrences d'une valeur avec Find sur des dates
    Par iperkut dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 08/11/2011, 19h07
  3. [Debutant(e)]operation sur dates
    Par sUrTr dans le forum Collection et Stream
    Réponses: 2
    Dernier message: 11/10/2004, 15h58
  4. Resutlat de calcul sur date formaté
    Par neness dans le forum SQL
    Réponses: 6
    Dernier message: 16/06/2004, 15h34
  5. Calcul sur date
    Par Thomad dans le forum MS SQL Server
    Réponses: 2
    Dernier message: 17/09/2003, 08h55

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