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 :

encore un soucis avec la fonction "find" sur une date [Toutes versions]


Sujet :

Macros et VBA Excel

  1. #1
    Inactif  

    Homme Profil pro
    cuisiniste
    Inscrit en
    Avril 2009
    Messages
    15 379
    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 379
    Points : 12 075
    Points
    12 075
    Billets dans le blog
    8
    Par défaut encore un soucis avec la fonction "find" sur une date
    bonjour a tous
    j'ai encroe un soucis avec find sur une date
    j'ai essayé plusieur facon de l'aborder mais rien n'y fait il semblerait que find renvoie quand meme nothing
    le but de cette macro et de copier des ligne si la date n'existe pas dans le sheets archive /rien faire si elle existe
    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
    Sub archivages()
        Dim donné, arrivée, cel As Range, ligarriv As Range
        With Sheets(1)
            arrivée = .Range("B3:F3").Value
            donné = Array(Format(.Range("B4"), "dd/mm/yyyy"), .Range("B7"), .Range("B6"), .Range("B9"), .Range("B8"), .Range("B5"))
            Set r1 = .Range("A18:k18")
            Set r2 = .Range("A26:k26")
            Set r3 = .Range("A27:k27")
            Set Rng = Application.Union(r1, r2, r3)
        End With
        Set ligne = Sheets("archive").Columns("A:A").Find(CDate(Sheets(1).Range("B4").Value))
        'Sheets("archive").Columns("A:A").Find(Sheets(1).Range("B4").Value, lookat:=xlWhole)
        ' Sheets("archive").Columns("A:A").Find(Format(Sheets(1).Range("B4").Value, "dd/mm/yyyy"))
        If ligne Is Nothing Then
            Rng.Copy
            Set plage_dest = Sheets("archive").Cells(Rows.Count, "G").End(xlUp).Offset(1, 0).Resize(3, 11)
            plage_dest.PasteSpecial Paste:=xlPasteValuesAndNumberFormats    'voir Enum ci-dessous
            Sheets("archive").Cells(Rows.Count, 1).End(xlUp).Offset(3, 0).Resize(1, 6) = donné
        End If
        Set cel = Sheets("archive").Columns("A:A").Find(Format(Sheets(1).Range("B2"), "dd/mm/yyyy"))
        If Not cel Is Nothing Then
            Set ligarriv = cel.Offset(0, 17).Resize(1, 5)
            ligarriv = arrivée
        End If
        lig = Sheets("archive").Cells(Rows.Count, "G").End(xlUp).Row
        With Sheets("archive").Range("A" & lig & ":Aw" & lig).Borders(xlEdgeBottom)
            .LineStyle = xlContinuous
            .ColorIndex = xlAutomatic
            .Weight = xlThick
        End With
        'MFC
        'MsgBox ligarriv.Address
    End Sub
    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

  2. #2
    Invité
    Invité(e)
    Par défaut
    Bonjour Patrick,
    toujours au format international!
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    donné = Array(Format(.Range("B4"),MyFormat), .Range("B7"), .Range("B6"), .Range("B9"), .Range("B8"), .Range("B5"))
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     Set ligne = Sheets("archive").Columns("A:A").Find(format(Sheets(1).Range("B4").Value,MyFormat))
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Set cel = Sheets("archive").Columns("A:A").Find(Format(Sheets(1).Range("B2"), MyFormat))

  3. #3
    Inactif  

    Homme Profil pro
    cuisiniste
    Inscrit en
    Avril 2009
    Messages
    15 379
    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 379
    Points : 12 075
    Points
    12 075
    Billets dans le blog
    8
    Par défaut re
    re
    ok robert sauf que a m'arrange pas ce format
    tu as une idée pour conserver ce format ?
    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

  4. #4
    Invité
    Invité(e)
    Par défaut
    c'est transparent pour toi, excel comprendra "dd/mm/yyyy" (paramètre régional!)

  5. #5
    Inactif  

    Homme Profil pro
    cuisiniste
    Inscrit en
    Avril 2009
    Messages
    15 379
    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 379
    Points : 12 075
    Points
    12 075
    Billets dans le blog
    8
    Par défaut re
    bon j'ai trouvé mais c'est quand meme curieux

    la veille je place la date en string avec format

    exemple;
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    sheets(1).range("A10")=format("20/10/2015")
    le lendemain je fait
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    sheets(1).colum("A:A").find(format("20/10/2015"))
    ca me renvoie nothing

    par contre si je formate la colonne au format voulue la oui ca fonctionne

    j'en conclu donc que le format de la cellule n'est pas identique a celui affiché malgré l'insertion de la date avec format

    donc si je veux garder ce format visible et reel il faut que je formate la colonne ou voir meme la cellule dynamiquement par la suite
    soit la veille
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    sheets(1).range("A10")=format("20/10/2015")
    sheets(1).range("A10").numberformat="dd/mm/yyyy"
    et le find trouve
    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

  6. #6
    Invité
    Invité(e)
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Range="01/02/1015")
    donne "02/01/2015"
    alors que range="2015/02/01" donne "01/02/2015"
    c'est pour cela que le format internationale est de rigueur!
    les dates coté XLS sont vues en fonction des paramétrés régionaux,
    coté VBA comme des date américaines!

    le format internationale, oblige Excel à cogiter!
    find("01/02/215") fera chercher "02/01/2015" alors que find("2015-02-01") fera cherche "01/02/2015"
    Dernière modification par LittleWhite ; 30/04/2016 à 12h09. Motif: Balises code

  7. #7
    Inactif  

    Homme Profil pro
    cuisiniste
    Inscrit en
    Avril 2009
    Messages
    15 379
    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 379
    Points : 12 075
    Points
    12 075
    Billets dans le blog
    8
    Par défaut re
    bon finalement c'est bien un probleme de format (affiché/reel)
    et meme en formatant la colonne en placant format(blala,"dd/mm/yyyy") j'obtiens le format international

    j'ai donc mis toute la colonne au format text
    et apres insertion au format que je veuxle find trouve avec le meme format
    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

  8. #8
    Inactif  

    Homme Profil pro
    cuisiniste
    Inscrit en
    Avril 2009
    Messages
    15 379
    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 379
    Points : 12 075
    Points
    12 075
    Billets dans le blog
    8
    Par défaut re
    re
    le format internationale, oblige Excel à cogiter!
    find("01/02/215") fera chercher "02/01/2015" alors que find("2015-02-01") fera cherche "01/02/2015"
    désolé Robert mas ca n'est absolument pas le cas chez moi
    si j'ai en regional "09/10/2015" dans la colonneA et qe je fai un find("2015/10/09") le find me done nothing
    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

  9. #9
    Expert éminent sénior
    Avatar de Marc-L
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2013
    Messages
    9 468
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2013
    Messages : 9 468
    Points : 18 677
    Points
    18 677
    Par défaut

    Bonjour, bonjour !

    Comme souvent répété dans les discussions de ce forum,
    Find fonctionne par défaut avec l'affichage texte si recherche dans les valeurs !

    Si par contre la colonne ne contient pas de formules, utiliser Find en cherchant dans les formules
    avec soit une date soit un entier long représentant la date !

    Evidemment pour que cela fonctionne, ne pas oublier de paramétrer son argument LookIn, hein Patrick !
    Si l'ami canadien DocMarti passe par ici, il va t'en remettre une couche ‼

    _____________________________________________________________________________________________________
    Je suis Charlie, Bardo, Sousse
    C'est parce que la vitesse de la lumière est plus rapide que celle du son que tant de gens paressent brillants avant d'avoir l'air con ! (Thomas Boishardy)

  10. #10
    Inactif  

    Homme Profil pro
    cuisiniste
    Inscrit en
    Avril 2009
    Messages
    15 379
    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 379
    Points : 12 075
    Points
    12 075
    Billets dans le blog
    8
    Par défaut re
    salut Marc !!

    oui bon ben moi je formate la colonne en texte

    et je n'ai plus de soucis

    sachant que c'est moi qui insert la date la veille avec "format" donc en string je n'ai pas a me soucier de cela hein marc !!!

    il fallait simplement passer du format "standard" qui est automatique , a "texte" dans le menu format cellule

    maintenant effectivement si c'etait un fichier récupéré ou autrement formaté il faudrait effectivement que je passe par une formule cdbl par exemple

    je vais m'y interésser de plus près ca peut servir

    je suis en train de refaire le fichier pour sebphyto mais en travaillant sur excel et non dans un htmldocument en memoire
    donc tout en string et ca change pas mal de chose quand au procédé

    bon je vais examiner une nouvelle fois vos réponses et mediter sur ce point
    merci a tous
    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

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

Discussions similaires

  1. Encore un soucis avec IServerProvider
    Par r0d dans le forum C++/CLI
    Réponses: 3
    Dernier message: 18/01/2007, 22h28
  2. [Système] P'tit soucis avec la fonction EXEC
    Par nais_ dans le forum Langage
    Réponses: 9
    Dernier message: 23/08/2006, 11h36
  3. Souci avec le retour de find
    Par khayyam90 dans le forum Linux
    Réponses: 3
    Dernier message: 10/05/2006, 14h58

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