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

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    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 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 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 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 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 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 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 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 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 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

+ 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