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 :

Recherche valeur Range de multiple occurrence [Toutes versions]


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Novembre 2005
    Messages
    31
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2005
    Messages : 31
    Par défaut Recherche valeur Range de multiple occurrence
    Bonjour,

    Je cherche à récupérer dans une liste les coordonnés de la cellule renfermant une occurrence précise.

    Nom : Capture.PNG
Affichages : 2055
Taille : 9,4 Ko


    Je recherche l’occurrence "ID_PR_4" pour ensuite sélectionner les prénoms correspondant.

    Merci pour votre aide.

    Alunix

  2. #2
    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 alunix,

    Très simplement comme ceci, j'imagine :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    Dim oRng As Range
    Dim i As Integer
     
    With Worksheets("ma feuille")
        Set oRng = .Range("B1")
        For i = 1 To .Cells(Rows.Count, 2).End(xlUp).Row - 1
            If oRng.Offset(i, 0) = "ma valeur" Then
                MsgBox oRng.Offset(i, 1)
                'le fais ce que je veux
            End If
        Next i
    End With
    N'hésite pas à revenir vers moi !

    Cordialement,
    Kimy

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

    Informations professionnelles :
    Activité : salarié

    Informations forums :
    Inscription : Août 2014
    Messages : 1 373
    Par défaut
    Bonsoir le fil, bonsoir le forum,

    Une autre proposition :

    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
    Sub Macro1()
    Dim O As Worksheet 'déclare la variable O (Onglet)
    Dim PL As Range 'déclare la variable PL (PLage)
    Dim TC As Variant 'déclare la variable TC (Tableau de Cellules)
    Dim I As Integer 'déclare la variable I (Incrément)
     
    Set O = Sheets("Feuil1") 'définit l'onglet O (à adapter)
    O.Select 'sélectionne l'onglet O
    Set PL = O.Range("A1") 'initialise la plage PL
    TC = O.Range("A1").CurrentRegion 'définit le tableau de cellules TC
    For I = 2 To UBound(TC, 1) 'boucle sur toutes les lignes du tableau de cellules TC (en partant de la seconde)
        If TC(I, 2) = "ID_PR_4" Then 'condition : si la valeur ligne I colonne 2 de TC est égale à "ID_PR_4"
            'redéfinit la plage PL (la cellule ligne I colonne 3 si l'adresse de PL est A1, sinon,
            'l'union de PL et de la cellule ligne I colonne 3
            Set PL = IIf(PL.Address = "$A$1", O.Cells(I, 3), Application.Union(PL, O.Cells(I, 3)))
        End If 'fin de la condition
    Next I 'prochaine ligne de la boucle
    If PL.Address <> "$A$1" Then PL.Select 'si l'adresse de PL est différente de A1, sélectionne la plage PL
    End Sub

  4. #4
    Membre Expert
    Homme Profil pro
    Ingénieur développement matériel électronique
    Inscrit en
    Septembre 2013
    Messages
    783
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur développement matériel électronique
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Septembre 2013
    Messages : 783
    Par défaut
    Bonjour,

    Si vous voulez passer par du VBA, vous avez les réponses .... autrement, un filtre avancé peut très bien le faire aussi

  5. #5
    Membre averti
    Profil pro
    Inscrit en
    Novembre 2005
    Messages
    31
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2005
    Messages : 31
    Par défaut
    Merci pour votre retour à tous deux.
    J'ai choisi d'uriliser le code de Thauteme, car j'ai il y a un max de commentaires.
    MAis j'ai une question: comment puis-je recupérer les Range des prenoms selectionés?

    Merci

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

    Informations professionnelles :
    Activité : salarié

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

    Citation Envoyé par alunix Voir le message
    comment puis-je recupérer les Range des prenoms selectionés?

    Pas sûr de comprendre... Tu voudrais stocker les adresses dans un tableau ? Parce que sinon la variable PL fait déjà ce que tu demandes...

  7. #7
    Membre averti
    Profil pro
    Inscrit en
    Novembre 2005
    Messages
    31
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2005
    Messages : 31
    Par défaut
    Et bien justement, je n'ai pas réussi à comprendre comment fonctionne cette variable PL
    Moi j'ai comme si dessous:

    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
     ligne_nom = 18 'initialisation de la première ligne où sera écrit le prenom et le nom de l'ICAPS admin
     
            Set Feuil_recherche = Sheets("TABLE2") 'je définit dans quelle feuille de mon classeur je vais faire tourner ma recherche
            Feuil_recherche.Select ' je sélection cette feuille
            Set PLage = Feuil_recherche.Range("A:A") 'initialise la plage PL
            TC = Feuil_recherche.Range("A:A").CurrentRegion 'je définit le tableau de cellules TC, TC étant le tableau dans le quel je vais effectuer mes recherche d'occurrenced
            For I = 2 To UBound(TC, 1) 'boucle sur toutes les lignes du tableau de cellules TC (en partant de la seconde ligne, puisque le première ligne correspond aux noms de champs. Et avec la fonction UBound je définit la fin de ma boucle de recherche
                If TC(I, 2) = "ID_PR_4" Then
                    'remplissage de la fiche
                    Sheets("ORIGINE_FILE (2)").Range("A" & ligne_nom).Value = Range("C" & I).Value ' je  recupère le prenom
                    Sheets("ORIGINE_FILE (2)").Range("C" & ligne_nom).Value = Range("D" & I).Value ' je  recupère le nom
                    Sheets("ORIGINE_FILE (2)").Range("E" & ligne_nom, "F" & ligne_nom).Merge 'commande pour merger deux cellules
                    Sheets("ORIGINE_FILE (2)").Range("E" & ligne_nom).HorizontalAlignment = xlCenter 'commande d'alignement au milieu pour les cellules qui viennent d'être merger
                    Sheets("ORIGINE_FILE (2)").Range("E" & ligne_nom).NumberFormat = "mmm-yy;@" 'formatage de la cellule
                    Sheets("ORIGINE_FILE (2)").Range("E" & ligne_nom).Value = Range("E" & I).Value ' je  recupère la date de début
                    Sheets("ORIGINE_FILE (2)").Range("G" & ligne_nom, "H" & ligne_nom).Merge 'commande pour merger deux cellules
                    Sheets("ORIGINE_FILE (2)").Range("G" & ligne_nom).HorizontalAlignment = xlCenter 'commande d'alignement au milieu pour les cellules qui viennent d'être merger
                    Sheets("ORIGINE_FILE (2)").Range("G" & ligne_nom).NumberFormat = "mmm-yy;@" 'formatage de la cellule
                    Sheets("ORIGINE_FILE (2)").Range("G" & ligne_nom).Value = Range("F" & I).Value ' je  recupère la date de fin
                    ligne_nom = ligne_nom + 1 'j'incrémente ma variable pour pouvoir insérer une nouvelle ligne dans ma fiche de suivi d'ICAPS
                    Sheets("ORIGINE_FILE (2)").Rows(ligne_nom).Insert 'insertion d'une ligne sous la ligne qui vient d'être rempli par la macro
                    Set PLage = IIf(PLage.Address = "$A$1", Feuil_recherche.Cells(I, 3), Application.Union(PLage, Feuil_recherche.Cells(I, 3)))
                End If
            Next I
            If PLage.Address <> "$A$1" Then PLage.Select 'si l'adresse de PLage est différente de A1, sélectionne la plage PLage
            End If

    (Je mets un max de commentaire, on le la déjà dit )

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

Discussions similaires

  1. [XL-2002] Recherche valeurs multiples (tableau double entrée)
    Par fredifly dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 13/11/2014, 10h07
  2. [Débutant] Problème de recherche de valeur sur variable multiple
    Par Vinces007 dans le forum C#
    Réponses: 7
    Dernier message: 02/08/2013, 09h08
  3. Réponses: 8
    Dernier message: 22/08/2011, 22h50
  4. recuperer valeur liste choix multiple
    Par gabychon dans le forum Général JavaScript
    Réponses: 7
    Dernier message: 13/06/2005, 11h47
  5. recherche valeur maximale entre deux champs
    Par maysa dans le forum Langage SQL
    Réponses: 6
    Dernier message: 25/05/2005, 09h40

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