Bonjour,
Je cherche à récupérer dans une liste les coordonnés de la cellule renfermant une occurrence précise.
Je recherche l’occurrence "ID_PR_4" pour ensuite sélectionner les prénoms correspondant.
Merci pour votre aide.
Alunix
Bonjour,
Je cherche à récupérer dans une liste les coordonnés de la cellule renfermant une occurrence précise.
Je recherche l’occurrence "ID_PR_4" pour ensuite sélectionner les prénoms correspondant.
Merci pour votre aide.
Alunix
Bonjour alunix,
Très simplement comme ceci, j'imagine :
N'hésite pas à revenir vers moi !
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
Cordialement,
Kimy
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
Bonjour,
Si vous voulez passer par du VBA, vous avez les réponses .... autrement, un filtre avancé peut très bien le faire aussi
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
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)
Partager