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 :

[Macro excel]selectionner une ligne à partir d'une recherche


Sujet :

Macros et VBA Excel

  1. #1
    Futur Membre du Club
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    10
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 10
    Points : 6
    Points
    6
    Par défaut [Macro excel]selectionner une ligne à partir d'une recherche
    Bonjour à tous,

    Je galère depuis se matin sur un petit truc mais pas moyen de trouver.

    J'ai un grand tableau, 65 colonnes et x lignes.
    Il y a deux colonnes (7et8) qui sont rayon et référence.
    J'ai fait un userform qui permette à un individu de rentrer le rayon et la référence afin que la macro la trouve dans la tableau.
    J'ai réussi à faire la macro pour trouver les lignes, j'ai même le nombre de ligne ou se trouve cette réf et ce rayon.
    Mais mon but c'est de sélectionner qu'une ligne afin de prendre quelque donnée qui se trouve sur ces lignes.

    Si quelqu'un me m'aider svp

    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
    'Permet de trouver le nombre de ligne à partir de la colonne 7
     
    Cells(2, 7).Select
    Ligne = Range(Selection, Selection.End(xlDown)).Rows.Count + 1
     
    'Cherche dans le tableau dans la colonne 7 et 8 le rayon et la référence
     
    compteur = 0
    For i = 2 To Ligne
     
    If Cells(i, 7).Value & Cells(i, 8).Value = RechercheRef.Ray.Value & RechercheRef.Ref.Value Then
    compteur = compteur + 1
     
    End If
     
    Next

  2. #2
    Membre habitué
    Inscrit en
    Juillet 2005
    Messages
    141
    Détails du profil
    Informations forums :
    Inscription : Juillet 2005
    Messages : 141
    Points : 148
    Points
    148
    Par défaut
    Bonjour,
    alors perso j'ai pas tout compris
    Ton utilisateur entre une valeur pour le rayon et la référence, et ensuite tu veux trouver La ligne qui a le mm rayon et la meme référence? ou il peut yen avoir plusieurs et peu importe celle que tu sélectionnes
    Si je comprend bien en fait ce que tu veux c'est faire la copie une seule fois et non pas à chaque fois qu'il trouve la paire de valeur choisie
    J'imagine que par contre tu souhaites garder le compteur.
    Je te conseillerais donc de rajouter un test à l'intérieur de ton test sur ton compteur du style:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    compteur = 0
    For i = 2 To Ligne
     
    If Cells(i, 7).Value & Cells(i, 8).Value = RechercheRef.Ray.Value & RechercheRef.Ref.Value Then
        If compteur=0 then
           'la les actions que tu veux effectuer (copie de cellule...)
        end if
    compteur = compteur + 1
     
    End If
     
    Next
    est-ce ca que tu voulais ou suis-je à coté de la plaque
    rémi

  3. #3
    Futur Membre du Club
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    10
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 10
    Points : 6
    Points
    6
    Par défaut
    merci de m'aider

    Si t'as bien compris ce que je voulais faire!!!
    Mais le compteur j'en ai pas besoin je l'avais utilisé pour faire un essai.
    Mon but c'est que si ma recherche me trouve plusieurs lignes (elles seront pareil), je veux juste le numéro de ligne d'une d'elle.

  4. #4
    Membre habitué
    Inscrit en
    Juillet 2005
    Messages
    141
    Détails du profil
    Informations forums :
    Inscription : Juillet 2005
    Messages : 141
    Points : 148
    Points
    148
    Par défaut
    OK
    alors dans ce cas je te propose de ne pas faire une boucle for mais une boucle While:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    i = 1
    While Cells(i, 7).Value & Cells(i, 8).Value <> RechercheRef.Ray.Value & RechercheRef.Ref.Value
        i = i + 1
    Wend
    La boucle s'arrete dès qu'elle trouve ton doublet et la valeur de taligne est alors stockée dans i
    rémi

  5. #5
    Futur Membre du Club
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    10
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 10
    Points : 6
    Points
    6
    Par défaut
    En faite j'ai réussi avec le compteur comme tu m'as expliqué.
    Car ça me suffit d'en trouver qu'une.

    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
    'Permet de trouver le nombre de ligne à partir de la colonne 7
     
    Cells(2, 7).Select
    Ligne = Range(Selection, Selection.End(xlDown)).Rows.Count + 1
     
    'Cherche dans le tableau dans la colonne 7 et 8 le rayon et la référence
     
    compteur = 0
    For i = 2 To Ligne
     
    If Cells(i, 7).Value & Cells(i, 8).Value = RechercheRef.Ray.Value & RechercheRef.Ref.Value Then
    compteur = compteur + 1
        If compteur = 1 Then
        pays = Cells(i, 10).Value
        End If
    End If
     
    Next
     
    MsgBox (pays)

  6. #6
    Membre habitué
    Inscrit en
    Juillet 2005
    Messages
    141
    Détails du profil
    Informations forums :
    Inscription : Juillet 2005
    Messages : 141
    Points : 148
    Points
    148
    Par défaut
    oui je sais bien que ca marche mais avec la boucle while tu vas plus vite parceque tu t'arretes dès que tu as trouvé une ligne qui marche et tu parcours plus tous le tableau
    en plus ca te permet d'enlenver ta ligne
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Ligne = Range(Selection, Selection.End(xlDown)).Rows.Count + 1
    il faut juste que tu mettes une petite sécu pour pouvoir sortir de ta boucle au cas ou elle trouverais pas de ligne du style:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    i = 1
    While Cells(i, 7).Value<>RechercheRef.Ray.Value  and Cells(i, 8).Value & i <> RechercheRef.Ref.Value and i<>5000
        i = i + 1
    Wend
    if i=5000 then msgbox("La recherche a échouée")
    par ailleur attention au & dans ton code c'est dangereux
    utilise plus des And en énumérant les conditions
    rémi

  7. #7
    Membre habitué
    Inscrit en
    Juillet 2005
    Messages
    141
    Détails du profil
    Informations forums :
    Inscription : Juillet 2005
    Messages : 141
    Points : 148
    Points
    148
    Par défaut
    attention erreur dans mon test de sécu:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    i = 1
    While Cells(i, 7).Value<>RechercheRef.Ray.Value  and Cells(i, 8).Value & i <> RechercheRef.Ref.Value or i<>5000
        i = i + 1
    Wend
    if i=5000 then msgbox("La recherche a échouée")
    avec un or et pas un And pour la dernière condition
    dsl

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

Discussions similaires

  1. Remplir une ligne à partir d'une cellule à l'aide d'une macro
    Par mathilde13870 dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 17/03/2014, 14h56
  2. création d'une listbox à partir d'une ligne
    Par mauriceguillier dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 30/11/2010, 09h13
  3. Réponses: 4
    Dernier message: 10/10/2010, 11h46
  4. Insérer plusieurs lignes dans une cible à partir d'une ligne source
    Par marcelus45 dans le forum ODI (ex-Sunopsis)
    Réponses: 4
    Dernier message: 15/06/2009, 17h13
  5. Problème pour déplacer une ligne à partir d'une variable
    Par Cadenwarr dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 20/01/2008, 12h12

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