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 :

Selection.find, comportement erratique? [XL-2010]


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Inscrit en
    Janvier 2008
    Messages
    28
    Détails du profil
    Informations forums :
    Inscription : Janvier 2008
    Messages : 28
    Par défaut Selection.find, comportement erratique?
    Salut tout le monde,


    J'ai un comportement bizarre que je n'explique pas et là, je sèche complètement...

    Peut-être auriez vous un regard neuf, ou peut-être même qu'en parlant...

    Mon objectif, est le suivant :
    - lister les valeurs d'une colonne donnée, dans le fichier Excel courant
    - pour chacune des valeurs, chercher sa présence dans un autre fichier Excel...

    Voici mon code (je l'ai manipulé et trituré dans tous les sens avant de venir vous faire c...)

    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
     
            Set cWB = ThisWorkbook
     
            With oExcel
                .Visible = True
                Set WB = .Workbooks.Open(sFile)
                Set WS = WB.Worksheets(CONST_DATA_SHEET_NAME)
     
                Set cWS = cWB.Worksheets(CONST_DATA_SHEET_NAME)
                With cWS
                    .Select
                    Set cRNG = .Range(.Cells(CONST_VAR_IDX_START_ROW, CONST_VAR_IDX_COLUMN), _
                                      .Cells(CONST_VAR_IDX_START_ROW, CONST_VAR_IDX_COLUMN).End(xlDown))
                               '.Cells(.Cells(Rows.Count, "B").End(xlDown).Row, 2))
     
                    With cRNG
                        For Each cCursor In cRNG
                            'cWB.Activate
                            Debug.Print cCursor.Value
     
                            'WB.Activate
                            With WB
                                .Activate
                                With WS
                                    .Select
                                    Set RNG = .Range(.Cells(CONST_VAR_IDX_START_ROW, CONST_VAR_IDX_COLUMN), _
                                                     .Cells(CONST_VAR_IDX_START_ROW, CONST_VAR_IDX_COLUMN).End(xlDown))
                                    RNG.Select
     
                                    'Set myCell = Selection.Find(What:=cCursor.Text, After:=ActiveCell, LookIn:=xlFormulas, _
                                                 LookAt:=xlWhole, SearchOrder:=xlByRows, SearchDirection:=xlDown, _
                                                 MatchCase:=False, SearchFormat:=False)
                                    Set myCell = Selection.Find(What:=cCursor.Text, After:=ActiveCell)
     
                                    If myCell Is Nothing Then
                                        'do nothing...
                                    Else
                                        Debug.Print myCell.Row
                                    End If
     
                                    Set RNG = Nothing
                                    Set myCell = Nothing
                                End With
                            End With
                        Next
                    End With
                End With
     
                'WB.Activate
                'closeExcel False
                '.Quit
            End With
    Et le comportement observé :
    - aléatoire...
    - le find me ressort soit, la première ligne, soit la deuxième ligne mais rien d'autres... (et pourtant, il y en a...)

    le premier Debug.Print cCursor.Value me liste bien les différentes valeurs de la première liste

    le deuxième Debug.Print myCell.Row c'est la fête!

    J'ai changé les différents paramétrages au niveau du find, rien n'a changé, ce n'est ni un problème de sélection, ni un problème d'activation de workbook...

    Bref, je sèche complètement

    Merci d'avance pour vos retours

  2. #2
    Expert éminent
    Avatar de Marc-L
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2013
    Messages
    9 468
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2013
    Messages : 9 468
    Par défaut
    Bonjour,

    si comportement bizarre il y a, c'est tout simplement mal programmé ‼

    Soit cela vient d'un paramètre de la fonction, soit un objet n'est pas défini par exemple, voir les deux ! …

    Et "travailler" avec Select & Selection n'est pas "professionnel", souvent source d'ennui …

    Par exemple la ligne 33, rien qu'en consultant l'aide de la fonction et son exemple …

    Afin d'obtenir de l'aide, des explications claires & exhaustives ainsi que les fichiers .xls en pièces jointes seraient un plus …

  3. #3
    Expert confirmé
    Avatar de Oliv-
    Homme Profil pro
    solution provider
    Inscrit en
    Mars 2006
    Messages
    4 093
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : solution provider

    Informations forums :
    Inscription : Mars 2006
    Messages : 4 093
    Billets dans le blog
    20
    Par défaut
    salut,
    regarde cette discussion là tu y trouveras sans doute ton bonheur

    http://www.developpez.net/forums/d12...-dictionnaire/
    Have a nice day. Oliv'
    Votre réponse est peut être dans mon blog !
    https://www.developpez.net/forums/blogs/191381-oliv-/

  4. #4
    Membre averti
    Inscrit en
    Janvier 2008
    Messages
    28
    Détails du profil
    Informations forums :
    Inscription : Janvier 2008
    Messages : 28
    Par défaut
    merci pour vos réponses,

    j'avais la tête dans le fion hier, j'ai résolu mon problème depuis en vous exposant mon souci.

    sinon Marc, je ne voulais pas vous embêter avec tout le reste du code (tout a été bien instancié et déclaré etc...)

    je ne suis pas expert et ne prétends pas l'être; cela aurait été donc sympa de dire pourquoi le select et selection n'est pas propre avec source d'ennui, au lieu de dire que c'est mal programmé et pas professionnel.

    et même si je reste persuadé qu'il n'était pas dans ton intention, pour ma part, j'ai pris ton retour plutôt comme une agression

    ceci étant dit, grâce à cela, c'était une piste pour moi lol

    bref, merci à vous 2

    @++

  5. #5
    Expert éminent
    Avatar de Marc-L
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2013
    Messages
    9 468
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2013
    Messages : 9 468
    Par défaut

    Heureusement que j'avais mis des guillemets !

    A une fin pédagogique, voir cette discussion !

    Travailler directement sur les objets est bien plus efficient et limite les risques d'erreur …

  6. #6
    Expert confirmé
    Avatar de Oliv-
    Homme Profil pro
    solution provider
    Inscrit en
    Mars 2006
    Messages
    4 093
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : solution provider

    Informations forums :
    Inscription : Mars 2006
    Messages : 4 093
    Billets dans le blog
    20
    Par défaut
    Bonjour à tous,
    La remarque de Marc était judicieuse (et sans agressivité ma semble-t-il),
    quand tu fais un .select puis selection.quelquechose
    tu fais 2 opérations
    mais surtout tu travailles avec la chose selectionnée , qui pourrait changer pour x raisons donc source d'erreurs


    par exemple
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    RNG.Select 'ok pour debogage
     
                                    'Set myCell = Selection.Find(What:=cCursor.Text, After:=ActiveCell, LookIn:=xlFormulas, _
                                                 LookAt:=xlWhole, SearchOrder:=xlByRows, SearchDirection:=xlDown, _
                                                 MatchCase:=False, SearchFormat:=False)
                                    Set myCell = RNG.Find(What:=cCursor.Text, After:=ActiveCell)
    mieux ainsi

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Set myCell = RNG.Find(What:=cCursor.Text, After:=RNG.range("a1"))
    Have a nice day. Oliv'
    Votre réponse est peut être dans mon blog !
    https://www.developpez.net/forums/blogs/191381-oliv-/

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

Discussions similaires

  1. Comportement erratique en héritage
    Par esteban dans le forum C++
    Réponses: 11
    Dernier message: 03/07/2011, 09h25
  2. Comportements erratiques avec tp_attr : Effets de bord de Py_FindMethod ?
    Par Elenaher dans le forum Interfaçage autre langage
    Réponses: 0
    Dernier message: 23/06/2010, 14h59
  3. Boucle sur Selection.Find.Execute
    Par Dapangma dans le forum VBA Word
    Réponses: 4
    Dernier message: 12/08/2008, 08h57
  4. Question sur Selection.find (Recherche)
    Par Jakalop dans le forum Macros et VBA Excel
    Réponses: 9
    Dernier message: 20/06/2008, 18h06
  5. select au comportement bizarre
    Par juin29 dans le forum Oracle
    Réponses: 5
    Dernier message: 18/05/2006, 19h24

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