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 :

Find. . . WHAT ?! Pas de première cellule ?! [XL-2007]


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre Expert
    Homme Profil pro
    Chef de projet en SSII
    Inscrit en
    Novembre 2011
    Messages
    1 503
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Irlande

    Informations professionnelles :
    Activité : Chef de projet en SSII

    Informations forums :
    Inscription : Novembre 2011
    Messages : 1 503
    Par défaut Find. . . WHAT ?! Pas de première cellule ?!
    Bonjour,

    Je suis dans une perplexité monumentale. A tord, à raison, j'utilise beaucoup la méthode "Find".
    Or, je suis confronté à un problème que je n'arrive pas à résoudre :

    Je tente de faire ceci :
    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
    Private Sub ComboBox1_Change()
    Dim bool As Boolean
    Dim rng As Range
     
    col_B = Me.ComboBox1.Value
    bool = True
     
    With Worksheets("Feuil4")
        Set rng = .Range("A1:A" & .Columns(1).Find("*", , , , , xlPrevious).Row)
        'MsgBox rng.Address
        Do While bool
            'MsgBox rng.Find(col_A, LookIn:=xlValues, LookAt:=xlWhole).Offset(0, 1).Address
            If rng.Find(col_A, LookIn:=xlValues, LookAt:=xlWhole).Offset(0, 1) = col_B Then
                rng.Find(col_A, LookIn:=xlValues, LookAt:=xlWhole).Select
                bool = False
            Else
                Set rng = .Range(rng.Find(col_A, LookIn:=xlValues, LookAt:=xlWhole).Offset(1, 0), .Columns(1).Find("*", , , , , xlPrevious))
                'MsgBox rng.Address
            End If
        Loop
    End With
     
    End Sub
    Pour moi, cela signifie que je fais une recherche sur un mot-clé (col_A) en colonne A et vérifie qu'en colonne B, j'ai bien un autre mot-clé associé (col_B).
    • Si oui, je sélectionne la cellule... merci, bonsoir.
    • Si non, je "set" ma range à la cellule d'en dessous, et je continue de chercher.

    Or, ça ne se passe pas du tout comme je le souhaite. Si j'omet la variable "After", la recherche est censée s'effectuer depuis la cellule en haut à gauche. Or, j'ai l'impression que cette cellule n'est jamais prise en compte...

    Dans mon "Else", je "set" (pour moi toujours) ma nouvelle range à la cellule du dessous de celle que je viens de trouver. Or, ce n'est pas celle-ci qui est prise dans le cas du tableau suivant :
    A B
    1 Var1 B1
    2 Var1 B2
    2 Var1 B3
    4 Var2 B4
    5 Var2 B5
    6 Var2 B6
    Si je recherche le couple [Var1, B1] alors :
    • Dans ma première MsgBox, j'aurais bien "$A$1:$A$6".
    • Dans ma seconde MsgBox, j'ai $B$2... WTF ?! (au lieu de $B$1)
    • Dans ma dernière MsgBox, j'ai $A$3:$A$6... (au lieu de $A$2:$A$6)

    "Caaaaaalme ! Les Masters VBA de www.developpez.net vont te sortir de là !"

    Je ne vois donc que le fait que la première cellule de la Range d'un Find n'est pas prise en compte... mais l'utilisant depuis tant de temps, cela m’étonnerait de ne pas l'avoir vu avant...

    Des idées sur ma bêtise ?

    Merci par avance !

    Cordialement,
    Kimy

  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,

    If rng.Find(col_A, LookIn:=xlValues, LookAt:=xlWhole).Offset(0, 1) = col_B Then
    D'où provient col_A ?

  3. #3
    Invité
    Invité(e)
    Par défaut
    pourquoi ne pas faire ça?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Set rng = .Range("A:A")

  4. #4
    Membre Expert
    Homme Profil pro
    Chef de projet en SSII
    Inscrit en
    Novembre 2011
    Messages
    1 503
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Irlande

    Informations professionnelles :
    Activité : Chef de projet en SSII

    Informations forums :
    Inscription : Novembre 2011
    Messages : 1 503
    Par défaut
    Bonjour parmi, rdurupt,

    Merci de vous intéresser à mon problème.
    @parmi : col_A est mon premier paramètre, celui que je cherche dans la colonne A. L'utilisateur l'insère, je récupère l'ensemble des valeurs en colonne B qui ont un rapport. Je tente, enfin, de faire un "select" du couple après la sélection d'une des valeurs récupérées de B.

    @rdurupt : je peux tout à fait le faire (et l'ai déjà fait). Mais cela ne change rien. De plus, pour continuer la recherche, je serais, quoi qu'il arrive, obligé de restreindre la Range de recherche.

    Toujours pas trouvé de mon côté !

    Cordialement,
    Kimy

  5. #5
    Invité
    Invité(e)

  6. #6
    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
    Mais je ne vois pas où tu déclares ce col_A, donc, pour moi il est vide.
    Tu fais donc une recherche de "" dans un Range rng

  7. #7
    Membre Expert
    Homme Profil pro
    Chef de projet en SSII
    Inscrit en
    Novembre 2011
    Messages
    1 503
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Irlande

    Informations professionnelles :
    Activité : Chef de projet en SSII

    Informations forums :
    Inscription : Novembre 2011
    Messages : 1 503
    Par défaut
    Excuse-moi parmi, je n'avais pas compris le sens de ta première question...
    Ma variable "col_A" est bien déclarée en tant que variable public et contient bien la recherche que je souhaite.

    Je suis en train de modifier le code de rdurupt.

    Cependant, cela contournera le problème et je ne comprends toujours pas pourquoi j'ai un soucis avec ma méthode "Find"...

    Cordialement,
    Kimy

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

Discussions similaires

  1. Range.find(what:= cellule de ma feuille 2)
    Par pepsister dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 16/06/2014, 14h48
  2. Problème fonction search. La première cellule n'est pas incluse
    Par sambrelin dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 01/04/2014, 12h35
  3. Congés ou pas la première année après embauche?
    Par Asdorve dans le forum Congés
    Réponses: 30
    Dernier message: 18/12/2006, 15h49
  4. [VBA-excel] Affecter une date à la première cellule pleine
    Par DVano dans le forum Macros et VBA Excel
    Réponses: 18
    Dernier message: 10/11/2006, 12h06
  5. Réponses: 7
    Dernier message: 11/09/2006, 11h33

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