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 :

Recherche d'une Date dans une Matrice [XL-365]


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Homme Profil pro
    NC
    Inscrit en
    Janvier 2013
    Messages
    61
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : NC
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Janvier 2013
    Messages : 61
    Par défaut Recherche d'une Date dans une Matrice
    Bonjour,

    Je cherche à compléter mon calendrier (OngletS "MODELE").
    La recherche se faisant dans l'ongletS depuis une date extraite de l'ongletJF "JoursFeries".

    Un exercice simple, mais la fonction .Find ne le trouve pas ...

    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
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    Dim om As Worksheet
    Dim g, j, k, l, m, n, o As Long
    Dim Chemin, Source, OngletS, OngletJF, OngletVS As String
    Dim ligne, colonne As Integer
    Dim H_Lundi, H_Mardi, H_Mercredi, H_Jeudi, H_Vendredi As Long
     
     
    ligne = ActiveCell.Row
    colonne = ActiveCell.Column
    Source = "Calendrier Modèle1.xlsm"
    OngletS = "MODELE"
    OngletJF = "JoursFeries"
    OngletVS = "VacancesScolaires"
    k = 0
    g = 0
     
    'Workbooks.Open Filename:=Chemin & Target
    Sheets(OngletS).Select
    Application.ScreenUpdating = False
     
    Worksheets(OngletS).ScrollArea = ""
    Worksheets(OngletS).Activate
     
    'Vérifie que la date de l'onglet OngletJF est identique à celle se trouvant dans OngletS
    DateF = ActiveWorkbook.Worksheets(OngletJF).Cells(12, 2).Value
    Test = (DateF = ActiveWorkbook.Worksheets(OngletJF).Cells(12, 2).Value)
    'Test est VRAI à l'excution du deboggage
    'La valeur se trouve en [4,9]
    DateFS = Cells(4, 9)
    Test = (DateF = DateFS)
    'Test est VRAI à l'excution du deboggage
     
    Set Plage = Worksheets(OngletS).Range("I4:I34").Find(DateF, LookIn:=xlValues, lookat:=xlWhole, SearchOrder:=xlByColumns, SearchDirection:=False, SearchFormat:=False)
    If Plage Is Nothing Then
    MsgBox ("pas trouvé")
    Else
    ligne = Plage.Row
    col = Plage.Column
    MsgBox ("trouvé : ligne = " & ligne & " , colonne = " & col)
    End If
    Set om = Worksheets(OngletS)
     
    'Valeur présente
    Set Plage = om.Cells.Find(DateF, LookIn:=xlValues)
     
    If Plage Is Nothing Then
    MsgBox ("pas trouvé")
    Else
    ligne = Plage.Row
    col = Plage.Column
    MsgBox ("trouvé : ligne = " & ligne & " , colonne = " & col)
    End If
    Je me posais la question si le format de la date pouvait entrer en compte, mais vous remarquerez que les lignes de test "Calcul de Test" valide les formats identiques....
    Est-ce une erreur d'écriture sur l'expression de la fonction .Find ?
    J'ai également lancé la macro sous Excel 2016 et sans succès.

    Merci d'avance aux participants.

    Voici à quoi ressemble mon calendrier
    Nom : A.png
Affichages : 222
Taille : 42,2 Ko

  2. #2
    Expert confirmé
    Homme Profil pro
    retraité
    Inscrit en
    Juin 2012
    Messages
    3 440
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : retraité
    Secteur : Associations - ONG

    Informations forums :
    Inscription : Juin 2012
    Messages : 3 440
    Par défaut
    Bonjour,

    Cela ne résoudra sans doute pas le problème mais il faut quand même savoir que chaque variable doit être déclarée. Extrait de cette page:
    Dans l’instruction suivante, les variables intX, intY et intZ sont déclarées avec le type Integer.
    Dim intX As Integer, intY As Integer, intZ As Integer.

    Dans l’instruction suivante, intX et intY sont déclarées avec le type Variant ; et seule intZ est déclarée avec le type Integer.
    Dim intX, intY, intZ As Integer.
    Cordialement.

  3. #3
    Membre confirmé
    Homme Profil pro
    NC
    Inscrit en
    Janvier 2013
    Messages
    61
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : NC
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Janvier 2013
    Messages : 61
    Par défaut
    Bonjour EricDgn,

    Dans notre cas, les variables de définition de la matrice et de données à rechercher ont bien été déclarées.
    Ce programme a été modifié en fonction de l'avancement du développement pour rechercher l'origine de mon problème. Et au final, il sera épuré...

    Les dates sont calculées et je pensais que c'était l'origine du problème, jusqu'à ce que j'effectue les lignes de Test pour valider que le contenu était bien pris en compte et non la formule appliquée.

    Merci pour ce retour.

  4. #4
    Expert confirmé
    Homme Profil pro
    retraité
    Inscrit en
    Juin 2012
    Messages
    3 440
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : retraité
    Secteur : Associations - ONG

    Informations forums :
    Inscription : Juin 2012
    Messages : 3 440
    Par défaut
    Bonjour,

    Oui, la recherche des dates ne se fait convenablement que sur les cellules où les dates sont présentées au format standard, càd jj/mm/aaaa. Expliqué sur ce post. En attaché, un petit exemple pour voir cela.

    Cordialement.
    Fichiers attachés Fichiers attachés

  5. #5
    Membre confirmé
    Homme Profil pro
    NC
    Inscrit en
    Janvier 2013
    Messages
    61
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : NC
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Janvier 2013
    Messages : 61
    Par défaut
    Merci je vais étudier le fichier joint....et je reviens aussitôt.

  6. #6
    Membre confirmé
    Homme Profil pro
    NC
    Inscrit en
    Janvier 2013
    Messages
    61
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : NC
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Janvier 2013
    Messages : 61
    Par défaut
    Du fichier joint je comprends que :
    - la valeur de la cellule H1 sera stockée dans la variable v au format #jj/mm/aaaa# affichée en K1 selon le format d'affichage défini.
    - et que find trouvera uniquement la variable déclarée au format #jj/mm/aaaa# dans la matrice A1:E5...

    Dans mon cas, il faudrait que je transpose la matrice calendrier au bon format pour effectuer la recherche.
    Par exemple:
    Plage = Range(A1:E5)
    Plage.NumberFormat = "mm/dd/yyyy"
    et ma recherche se fera uniquement sur la Plage pour trouver le bon adressage...dans l'onglet traité.

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

Discussions similaires

  1. [AC-2002] recherche entre deux dates dans un vrai/faux
    Par Galanix2046 dans le forum Requêtes et SQL.
    Réponses: 9
    Dernier message: 09/01/2014, 17h52
  2. recherche sur une matrice
    Par ji3an dans le forum Excel
    Réponses: 1
    Dernier message: 17/03/2008, 06h05
  3. Dates dans une recherche multicritères
    Par alainGL dans le forum Requêtes et SQL.
    Réponses: 5
    Dernier message: 11/05/2007, 07h54
  4. Réponses: 3
    Dernier message: 21/01/2007, 10h40
  5. recherche entre deux dates dans une requête
    Par emmanuel4945 dans le forum Requêtes et SQL.
    Réponses: 2
    Dernier message: 29/11/2006, 21h42

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