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 :

Excel VBA recherche de valeur de formule dates


Sujet :

Macros et VBA Excel

  1. #1
    Membre averti
    Inscrit en
    Février 2010
    Messages
    21
    Détails du profil
    Informations forums :
    Inscription : Février 2010
    Messages : 21
    Par défaut Excel VBA recherche de valeur de formule dates
    Bonjour à tous,

    Niveau débutant :

    Sur un classeur 3 feuilles :

    Feuille 1 : feuilles d'hébergements à remplir au jour le jour.

    Feuille 2 "Base" : Suivie des entrées / Sorties + Stat

    Feuille 3 "Stat" : Stat générale

    Ce que je souhaite faire :

    Je souhaite pouvoir modifié une entrée sur la feuille "Base" à la date donnée de la feuille 1 (en "F1") en passant par une recherche sur le range "F2" à "AI2" de la feuille "Base" (Ces cellule sont en format date et les valeur sont trouvées via formule).
    Exemple : Le Dédé1 a été enregistré par erreur, l'utilisateur doit alors le supprimé.

    Problème :
    je n'arrive pas à trouvé une méthode de recherche ni à trouver d'où vient le problème entre le format date ou le fait de rechercher une valeur issue d'une formule...

    mes deux tentatives me paraissant les plus abouties :

    Via Find. :

    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
    Sub Test1()
    'déclaration des variables :
    Dim Trouve As Range, PlageDeRecherche As Range
    Dim Valeur_Cherchee As String, AdresseTrouvee As String
     
    '********* à adapter ***********
    'affectation de valeurs aux variables :
        'on cherche le mot "Trouve"
     
    Valeur_Cherchee = ActiveSheet.Range("F1").Value
    MsgBox Valeur_Cherchee
        'dans la première colonne de la feuille active
    Set PlageDeRecherche = Sheets("Base").Range("I2")
    '*******************************
     
    'méthode find, ici on cherche la valeur exacte (LookAt:=xlWhole)
    Set Trouve = PlageDeRecherche.Cells.Find(what:=Valeur_Cherchee, LookAt:=xlPart, LookIn:=xlValues)
     
    'traitement de l'erreur possible : Si on ne trouve rien :
    If Trouve Is Nothing Then
        'ici, traitement pour le cas où la valeur n'est pas trouvée
        AdresseTrouvee = Valeur_Cherchee & " n'est pas présent dans " & PlageDeRecherche.Address
    Else
        'ici, traitement pour le cas où la valeur est trouvée
        AdresseTrouvee = Trouve.Address
    End If
    MsgBox AdresseTrouvee
    'vidage des variables
    Set PlageDeRecherche = Nothing
    Set Trouve = Nothing
    End Sub
    Via Application Match :
    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
    Sub Test2()
     
    Dim LaDate As Date, D As Long
    LaDate = ActiveSheet.Range("F1").Value
    MsgBox LaDate
    On Error Resume Next
    With Sheets("Base")
    D = Application.Match(LaDate, Sheets("Base").Range("I2"), 0)
    MsgBox Sheets("Base").Range("I2").Value
    If Err = 0 Then
    MsgBox Range("A" & D).Address & " " & Range("A" & D).Value
    Else
    MsgBox "Pas trouver la date demandée"
    End If
    End With
    End Sub
    Je vous joint aussi le fichier et d'avance merci à ceux qui se pencherons sur mon soucis...

    Test 6.xls

  2. #2
    Expert confirmé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2013
    Messages
    3 609
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Alimentation

    Informations forums :
    Inscription : Mai 2013
    Messages : 3 609
    Par défaut
    Bonjour,

    Je n'ai pas regardé le fichier, mais ici tu recherches dans une cellule seulement
    Set PlageDeRecherche = Sheets("Base").Range("I2")
    '*******************************

    'méthode find, ici on cherche la valeur exacte (LookAt:=xlWhole)
    Set Trouve = PlageDeRecherche.Cells.Find(what:=Valeur_Cherchee, LookAt:=xlPart, LookIn:=xlValues)
    Essaie comme ceci pour voir
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    Set PlageDeRecherche = Sheets("Base").Columns("I")  'recherche la colonne I seulement
    '*******************************
     
    'méthode find, ici on cherche la valeur exacte (LookAt:=xlWhole)
    Set Trouve = PlageDeRecherche.Find(what:=Valeur_Cherchee, LookAt:=xlPart, LookIn:=xlValues)

  3. #3
    Membre averti
    Inscrit en
    Février 2010
    Messages
    21
    Détails du profil
    Informations forums :
    Inscription : Février 2010
    Messages : 21
    Par défaut
    Bonjour,

    Oui tout à fait, cela est voulu. J'ai préféré vérifier comme pour les message box présente à différente étapes.

    Merci de ton intérêt!

Discussions similaires

  1. Réponses: 1
    Dernier message: 18/12/2013, 13h14
  2. Excel VBA Rechercher et Afficher les données
    Par Ricoeva84 dans le forum Macros et VBA Excel
    Réponses: 18
    Dernier message: 25/07/2012, 18h35
  3. [XL-2007] recherche une valeur pour une (date-1)
    Par iliesss dans le forum Excel
    Réponses: 4
    Dernier message: 20/12/2010, 12h29
  4. Réponses: 2
    Dernier message: 28/08/2008, 08h52
  5. Aide Excel+VBA/saisie de valeurs
    Par youlard dans le forum Macros et VBA Excel
    Réponses: 5
    Dernier message: 20/07/2008, 17h30

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