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 :

Rechercher une variable dans une plage de données [XL-2003]


Sujet :

Macros et VBA Excel

  1. #1
    Membre du Club
    Inscrit en
    Mai 2008
    Messages
    76
    Détails du profil
    Informations forums :
    Inscription : Mai 2008
    Messages : 76
    Points : 53
    Points
    53
    Par défaut Rechercher une variable dans une plage de données
    Bonjour,

    Voici mon problème

    J'ai une variable définir comme ceci

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    Dim Datejour as string
     
    'La case ciblé contient la date du jour
     
    Datejour = Workbooks("stocks_2009_10.xls").Sheets("UNE").Range("B6")
    J'aimerais pour rechercher et selectionner la case contenant ma variable dans une plage ("A1:IV1") de la feuille ("Stock").

    par la suite, l'objectif est de coller le montant du stock dans la case en dessous (mais ca je sais faire )


    N'étant pas un expert du VBA, je n'ai aucune idée de la fonction à utiliser

    Pouvez-vous m'aider?

    merci

  2. #2
    Expert éminent Avatar de jfontaine
    Homme Profil pro
    Contrôleur de Gestion
    Inscrit en
    Juin 2006
    Messages
    4 754
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Sarthe (Pays de la Loire)

    Informations professionnelles :
    Activité : Contrôleur de Gestion

    Informations forums :
    Inscription : Juin 2006
    Messages : 4 754
    Points : 9 396
    Points
    9 396
    Par défaut
    Bonjour,

    Tu peux utiliser la méthode FIND

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    Msgbox Sheets("Stock").range("A1:IV1").Find(Datejour).Address
    F1 pour plus d'informations
    Jérôme

  3. #3
    Membre du Club
    Inscrit en
    Mai 2008
    Messages
    76
    Détails du profil
    Informations forums :
    Inscription : Mai 2008
    Messages : 76
    Points : 53
    Points
    53
    Par défaut
    Merci pour ton aide Jérome,

    Pourtant, je n'ai toujours pas réussi à selectionner la case en question

    J'ai essayer aussi :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
        Dim datejour As String
        Dim cellule As Range
     
        datejour = Workbooks("stocks_2009_10.xls").Sheets("UNE").Range("B8")
     
       cellule = Sheets("Stocks").Range("A1:CD1").Find(datejour)
     
       range(cellule).Selection
    Ca plante toujours sur le ligne avec la méthode find. (erreur 91 objet non défini)

  4. #4
    Membre chevronné Avatar de aalex_38
    Inscrit en
    Septembre 2007
    Messages
    1 631
    Détails du profil
    Informations forums :
    Inscription : Septembre 2007
    Messages : 1 631
    Points : 1 999
    Points
    1 999
    Par défaut
    Bonjour à tous,

    Tu dois rajouter set pour instancier un range [pas testé] :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    set cellule = Sheets("Stocks").Range("A1:CD1").Find(datejour)

  5. #5
    Expert éminent Avatar de jfontaine
    Homme Profil pro
    Contrôleur de Gestion
    Inscrit en
    Juin 2006
    Messages
    4 754
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Sarthe (Pays de la Loire)

    Informations professionnelles :
    Activité : Contrôleur de Gestion

    Informations forums :
    Inscription : Juin 2006
    Messages : 4 754
    Points : 9 396
    Points
    9 396
    Par défaut
    Essai tout simplement

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Sheets("Stocks").Range("A1:CD1").Find(datejour).Select
    Jérôme

  6. #6
    Membre du Club
    Inscrit en
    Mai 2008
    Messages
    76
    Détails du profil
    Informations forums :
    Inscription : Mai 2008
    Messages : 76
    Points : 53
    Points
    53
    Par défaut
    J'ai essayer les deux solutions, ca ne marche 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
     
       Sub test()
     
     
     
        Dim datejour As String
        Dim cellule As Range
     
        datejour = Workbooks("stocks_2009_10.xls").Sheets("UNE").Range("B8")
     
       cellule = Sheets("Stocks").Range("A1:CD1").Find(datejour)
     
       range(cellule).Select
     
       End Sub
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
       Sub test()
     
     
     
        Dim datejour As String
     
     
        datejour = Workbooks("stocks_2009_10.xls").Sheets("UNE").Range("B8")
     
      Sheets("Stocks").Range("A1:CD1").Find(datejour).select
     
       End Sub

  7. #7
    Expert éminent Avatar de jfontaine
    Homme Profil pro
    Contrôleur de Gestion
    Inscrit en
    Juin 2006
    Messages
    4 754
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Sarthe (Pays de la Loire)

    Informations professionnelles :
    Activité : Contrôleur de Gestion

    Informations forums :
    Inscription : Juin 2006
    Messages : 4 754
    Points : 9 396
    Points
    9 396
    Par défaut
    peut etre cette ligne a corriger
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    datejour = Workbooks("stocks_2009_10.xls").Sheets("UNE").Range("B8").Value
    Jérôme

  8. #8
    Expert éminent
    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
    Points : 6 696
    Points
    6 696
    Par défaut
    Bonjour,

    Les solutions, ici on te les donneras pratiquement toujours, par contre utilises les comme des pistes pour accroître tes connaissances, c’est ce qui te fera gagner du temps, du copier-coller, ça peut marcher un jour et l’autre non, si on a décrypté (pour les choses basiques au moins) ça va plus vite et c’est plus sûr... et pour employer ce dont on a besoin on regarde l'aide au mini pour voir de quoi il retourne si on ne connaît pas ce qui est employé


    code qui plante :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    Sub test()
     
     
     
        Dim datejour As String
        Dim cellule As Range
     
        datejour = Workbooks("stocks_2009_10.xls").Sheets("UNE").Range("B8")
     
       cellule = Sheets("Stocks").Range("A1:CD1").Find(datejour)
     
       range(cellule).Select
     
       End Sub
    Vois donc dans les tutos à variables, affectation et dans l’aide vba la méthode find….

    Aide vba / méthode Find :
    Cette méthode recherche une information spécifique dans une plage et renvoie un objet Range …/…
    Donc ma variable sera objet et affectée via l’instruction Set.

    Aide vba / méthode Find :
    …/… What Argument de type Variant obligatoire …/ …
    Donc ma variable datejour sera typée Variant

    Essaies ainsi :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    Sub Piste()
    Dim datejour As Variant
    Dim cellule As Range
    'sheets(2) est active
    'la date voulue est en C8 de sheets(2)
     
    datejour = Sheets(1).Range("B8")
    Set cellule = Sheets(2).Range("A1:CD18").Find(datejour)
    cellule.Select
    End Sub

    ne peut avoir de sens que dans ce contexte :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    Sub pass()
    Dim cellule As String
     
    cellule = "C20"
     Range(cellule).Select
    End Sub
    Sinon soit cellule est un Name et tu devrais avoir Range("cellule").Select
    soit cellule est un Range et tu as : cellule.Select

    ce seras clair pour toi en lisant le(s) tuto(s) sur les variables

    cordialement,

    Didier
    Didier Gonard

    Dernier tutoriel :
    Le VBA qu'est ce que c'est ?
    Tutoriels : Voir la liste de mes tutoriels Excel & VBA et mon site pro sur ma Page DVP
    Cours et tutoriels pour apprendre Excel
    N'oubliez pas de mettre : ..quand c'est le cas !

  9. #9
    Membre du Club
    Inscrit en
    Mai 2008
    Messages
    76
    Détails du profil
    Informations forums :
    Inscription : Mai 2008
    Messages : 76
    Points : 53
    Points
    53
    Par défaut
    merci à tous, et merci à Ormonth pour son aide éclairé!

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

Discussions similaires

  1. portée d'une variable dans une fonction dans une méthode
    Par laurentg2003 dans le forum Général JavaScript
    Réponses: 4
    Dernier message: 29/06/2009, 19h05
  2. Recherche une valeur d'une cellule dans une colonne d'une autre feuille
    Par kourria dans le forum Macros et VBA Excel
    Réponses: 8
    Dernier message: 21/06/2007, 13h48
  3. Réponses: 1
    Dernier message: 15/02/2007, 00h24
  4. Réponses: 7
    Dernier message: 21/08/2006, 16h27
  5. Mettre une valeur d'une table dans une variable
    Par Raphou96 dans le forum Access
    Réponses: 5
    Dernier message: 06/02/2006, 15h19

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