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 :

recherchev sur un multicritere infructueux


Sujet :

Macros et VBA Excel

  1. #1
    Membre habitué
    Homme Profil pro
    Technicien Help Desk
    Inscrit en
    Février 2014
    Messages
    319
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Eure (Haute Normandie)

    Informations professionnelles :
    Activité : Technicien Help Desk
    Secteur : Industrie

    Informations forums :
    Inscription : Février 2014
    Messages : 319
    Points : 158
    Points
    158
    Par défaut recherchev sur un multicritere infructueux
    J'ai un souci avec la requête s il n y 'a pas de correspondance le script s'arrête.

    Ai je fais une erreur en l'adaptant

    je veux rechercher la valeur de la colonne E de l'onglet base
    je veux afficher la valeur se trouvant dans la Colonne FL de l'onglet référence.
    Afficher la valeur trouver dans l'onglet de référence dans la colonne X de l'onglet de Base

    actuellement si le script ne trouve pas de correspondance il s'arrete
    Ce que je voudrais c'est que le script affiche "non référencé"

    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 Formule_test()
     
    Dim C As Range, Plage As Range, X As Range
    With Sheets("base")
        Set Plage = .Range("E2", .Cells(.Rows.Count, 1).End(xlUp))
    End With
    With Sheets("référence")
        For Each C In Plage
            Set X = .[A:A,B:B,D:D].Find(C.Value, , , xlWhole)
            C.Offset(, 19).Value = .Cells(X.Row, 167).Value    'mis 19  pour  l'ecart entre E et X 
        Next C
    End With
    End Sub

  2. #2
    Expert éminent sénior
    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
    Points : 18 677
    Points
    18 677
    Par défaut





    Mauvaise utilisation de la méthode Find, voir le code d'exemple de son aide …





    __________________________________________________________________________________________________
    Tous unis, tous Charlie
    C'est parce que la vitesse de la lumière est plus rapide que celle du son que tant de gens paressent brillants avant d'avoir l'air con ! (Thomas Boishardy)

  3. #3
    Membre habitué
    Homme Profil pro
    Technicien Help Desk
    Inscrit en
    Février 2014
    Messages
    319
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Eure (Haute Normandie)

    Informations professionnelles :
    Activité : Technicien Help Desk
    Secteur : Industrie

    Informations forums :
    Inscription : Février 2014
    Messages : 319
    Points : 158
    Points
    158
    Par défaut
    Je ne trouve pas mon erreur

  4. #4
    Expert éminent sénior
    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
    Points : 18 677
    Points
    18 677
    Par défaut





    Juste en comparant avec l'exemple de l'aide …

    C'est parce que la vitesse de la lumière est plus rapide que celle du son que tant de gens paressent brillants avant d'avoir l'air con ! (Thomas Boishardy)

  5. #5
    Membre habitué
    Homme Profil pro
    Technicien Help Desk
    Inscrit en
    Février 2014
    Messages
    319
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Eure (Haute Normandie)

    Informations professionnelles :
    Activité : Technicien Help Desk
    Secteur : Industrie

    Informations forums :
    Inscription : Février 2014
    Messages : 319
    Points : 158
    Points
    158
    Par défaut
    Je n'ai pas trouvé mon erreur je vais m'en passer et alourdir mon code

  6. #6
    Membre expert
    Homme Profil pro
    Retraité
    Inscrit en
    Avril 2011
    Messages
    1 858
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Avril 2011
    Messages : 1 858
    Points : 3 974
    Points
    3 974
    Par défaut
    Bonjour,

    Es-tu sûr que la colonne 167 correspond à la colonne FL ?

    Essaie avec :
    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
    Sub Formule_test()
    Dim C As Range, Plage As Range, X As Range
     
        With Sheets("base")
            Set Plage = .Range("E2:E" & .Range("E" & Rows.Count).End(xlUp).Row)
        End With
     
        With Sheets("référence")
            For Each C In Plage
                Set X = .Columns("A:C").Find(C.Value, , xlValues, xlWhole)
                If Not X Is Nothing Then
                    C.Offset(, 19).Value = .Cells(X.Row, "FL").Value
                End If
            Next C
        End With
     
    End Sub
    Cordialement.

  7. #7
    Expert éminent
    Homme Profil pro
    Inscrit en
    Août 2010
    Messages
    3 453
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Août 2010
    Messages : 3 453
    Points : 6 871
    Points
    6 871
    Par défaut
    Bonjour,

    Ton code fonctionne mais il te faut contrôler si X a été initialisée donc, si une cellule à été trouvée avec la valeur cherchée, dans le cas contraire ta variable est à "Nothing" et donc plantage.
    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
     
    Sub Formule_test()
     
        Dim C As Range, Plage As Range, X As Range
     
        With Sheets("base")
     
            Set Plage = .Range(.Cells(2, 5), .Cells(.Rows.Count, 1).End(xlUp))
     
        End With
     
        With Sheets("référence")
     
            For Each C In Plage
     
                Set X = .[A:A,B:B,D:D].Find(C.Value, , , xlWhole)
     
                If Not X Is Nothing Then
     
                    C.Offset(, 19).Value = .Cells(X.Row, 167).Value    'mis 19  pour  l'ecart entre E et X
     
                End If
     
            Next C
     
        End With
     
    End Sub
    Pour ma part, je suis d'avis que quand on défini une plage, il est plus "propre" de ne pas mélanger les adresses en string et les cellules(ligne, colonne) donc, ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    Set Plage = .Range(.Cells(2, 5), .Cells(.Rows.Count, 1).End(xlUp))
    au lieu de ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    Set Plage = .Range("E2", .Cells(.Rows.Count, 1).End(xlUp))
    ou alors ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    Set Plage = .Range(.Range("E2"), .Range("A" & .Rows.Count).End(xlUp))
    mais ceci n'engage que moi bien sûr

    Hervé.

  8. #8
    Membre émérite Avatar de Thautheme
    Homme Profil pro
    salarié
    Inscrit en
    Août 2014
    Messages
    1 373
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 63
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : salarié

    Informations forums :
    Inscription : Août 2014
    Messages : 1 373
    Points : 2 594
    Points
    2 594
    Par défaut
    Bonjour le fil, bonjour le forum,

    @Marc,
    Je connais une excellente clinique qui soigne l'arthrose qui sévit dans tes doigts t'empêchant de taper plus de 100 caractères...
    À plus,

    Thauthème

    Je suis Charlie

  9. #9
    Expert éminent sénior
    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
    Points : 18 677
    Points
    18 677
    Par défaut




    Merci mais aucun souci de ce côté là pour l'instant !

    Disons que lorsque la solution est indiquée en clair dans l'exemple de l'aide VBA d'une méthode …

    Ce qui a fonctionné pour moi convient donc aussi à d'autres !


    _____________________________________________________________________________________________________
    L'avenir n'appartient pas qu'à ceux se levant tôt mais surtout à ceux se donnant la peine de lire …
    C'est parce que la vitesse de la lumière est plus rapide que celle du son que tant de gens paressent brillants avant d'avoir l'air con ! (Thomas Boishardy)

  10. #10
    Membre habitué
    Homme Profil pro
    Technicien Help Desk
    Inscrit en
    Février 2014
    Messages
    319
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Eure (Haute Normandie)

    Informations professionnelles :
    Activité : Technicien Help Desk
    Secteur : Industrie

    Informations forums :
    Inscription : Février 2014
    Messages : 319
    Points : 158
    Points
    158
    Par défaut
    These

    j'ai ajusté mon code avec tes conseils le résultat est fructueux

    je te remercie pour tes conseils qui m'ont permis de comprendre enfin mon erreur.


    gFZT82
    effectivement les mon code avait des probleme de colonnage j'ai réglé le probleme en ne mettant que l'essentiel soit 6 colonnes sur les 200.

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

Discussions similaires

  1. [DAO] RECHERCHEV sur classeur fermé et variable
    Par cafeine dans le forum Contribuez
    Réponses: 3
    Dernier message: 28/04/2008, 09h58
  2. recherchev sur feuille variable
    Par raymoundo dans le forum Macros et VBA Excel
    Réponses: 5
    Dernier message: 23/04/2008, 12h21
  3. recherchev sur deux listes
    Par DjinnS dans le forum Excel
    Réponses: 1
    Dernier message: 15/02/2008, 15h07
  4. RechercheV sur plusieurs pages
    Par deaqu1 dans le forum Excel
    Réponses: 1
    Dernier message: 17/07/2007, 22h45
  5. quest sur recherche multicritere de cafeine
    Par yoyoo dans le forum Access
    Réponses: 1
    Dernier message: 10/07/2006, 15h58

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