Rechercher une valeur
Résolu
cbarre51
-
pijaku Messages postés 13513 Date d'inscription Statut Modérateur Dernière intervention -
pijaku Messages postés 13513 Date d'inscription Statut Modérateur Dernière intervention -
Bonjour à tous,
Je souhaiterai effectuer la recherche d'une valeur dans une colonne X
et renvoyer la valeur correspondante d'une autre colonne X+1 dans une
cellule en colonne X+X. Le problème est que l'on peut trouver cette
première valeur dans plusieurs lignes de la colonne X et que les
valeurs correspondantes en colonne X+1 sont toutes différentes. C'est
pour cela que je souhaite les concaténer dans une cellule en colonne
X+X.
Un exemple pour plus de compréhension:
1 Arbre
2 mouton
3 Arbre
4 route
5 Arbre
6 route
7 mouton
8 Arbre
9 route
10 route
Je souhaite ainsi faire apparaître dans la cellule en colonne X+X les
valeurs suivantes: 1;3;5;8; (même si possible l'un en dessous de l'autre sans ";").
Je suppose qu'il faut obligatoirement passer par du VBA, mais je n'en ai jamais fait.
Voilà j'espère avoir été assez claire et je vous remercie d'avance
pour l'aide apportée.
Charly
Je souhaiterai effectuer la recherche d'une valeur dans une colonne X
et renvoyer la valeur correspondante d'une autre colonne X+1 dans une
cellule en colonne X+X. Le problème est que l'on peut trouver cette
première valeur dans plusieurs lignes de la colonne X et que les
valeurs correspondantes en colonne X+1 sont toutes différentes. C'est
pour cela que je souhaite les concaténer dans une cellule en colonne
X+X.
Un exemple pour plus de compréhension:
1 Arbre
2 mouton
3 Arbre
4 route
5 Arbre
6 route
7 mouton
8 Arbre
9 route
10 route
Je souhaite ainsi faire apparaître dans la cellule en colonne X+X les
valeurs suivantes: 1;3;5;8; (même si possible l'un en dessous de l'autre sans ";").
Je suppose qu'il faut obligatoirement passer par du VBA, mais je n'en ai jamais fait.
Voilà j'espère avoir été assez claire et je vous remercie d'avance
pour l'aide apportée.
Charly
A voir également:
- Rechercher une valeur
- Rechercher ou saisir une url - Guide
- Rechercher une chanson - Guide
- Rechercher une image - Guide
- Rechercher remplacer word - Guide
- Rechercher ou entrer l'adresse - Guide
6 réponses
Salut Charly,
1- As tu essayé les filtres? Dans ton cas, un filtre automatique suffira...
2- Que souhaites tu exactement faire des données que tu trouves?
1- As tu essayé les filtres? Dans ton cas, un filtre automatique suffira...
2- Que souhaites tu exactement faire des données que tu trouves?
boaf, je pense que du simple SQL couplé à un autre langage de programmation (et encore, peut être même pas) fait l'affaire :)
ça me parait plus simple que du VBA (mais je ne connais pas le VBA)
en gros ça donnerait un truc du genre :
ce code est un code fait suite à une (très) courte nuit (1h30) et ne fonctionne donc probablement pas. il te donne cependant un aperçu e ce qu'il faut faire
ça me parait plus simple que du VBA (mais je ne connais pas le VBA)
en gros ça donnerait un truc du genre :
A = 'GET X FROM [ta table] WHERE [nom de ta colonne] = [valeur recherchée]' UPDATE [ta table] SET [X + X] = A WHERE id =[la ligne choisie]
ce code est un code fait suite à une (très) courte nuit (1h30) et ne fonctionne donc probablement pas. il te donne cependant un aperçu e ce qu'il faut faire
Bonjour Pijaku,
Les filtres pourraient effectivement marcher si je ne souhaitais pas conserver ces valeurs. Mon exemple est simplifier mais je souhaite en faite que les valeurs (1,3,5,8) soient conserver dans un autre onglet avec écrit en face mouton (que je vais écrire en manuel). J'ai omis de préciser bien sûr que je recherchais dans ce cas la valeur mouton. Mais pour ce que je souhaiterais dans un second temps c'est de renvoyer les valeurs associées à arbre puis dans une autre à route, etc... (dans une autre cellule)
DSL ma première explication manquait de clarté, j'espère que la seconde est meilleure.
PS : Si ce n'est toujours pas claire je ferais un petit exemple sous excel
Les filtres pourraient effectivement marcher si je ne souhaitais pas conserver ces valeurs. Mon exemple est simplifier mais je souhaite en faite que les valeurs (1,3,5,8) soient conserver dans un autre onglet avec écrit en face mouton (que je vais écrire en manuel). J'ai omis de préciser bien sûr que je recherchais dans ce cas la valeur mouton. Mais pour ce que je souhaiterais dans un second temps c'est de renvoyer les valeurs associées à arbre puis dans une autre à route, etc... (dans une autre cellule)
DSL ma première explication manquait de clarté, j'espère que la seconde est meilleure.
PS : Si ce n'est toujours pas claire je ferais un petit exemple sous excel
Regarde ce classeur. Il s'agit d'un exemple de programmation VBA (pour réveiller notre Templier ;-)) réalisé par l'EXCEL-lent Michel_m sur cette discussion
Merci Pikaju,
Dsl je ne suis apparemment pas réveillé non plus, c'est arbre et non mouton que je recherche...
Enfin bref ta solution s'approche pas mal de ce que je souhaite faire mais il ne permet pas de concaténer les valeurs. Ici il n'y a qu'une seul valeur pas élément recherché?
Comment puis-je te transmettre un exemple en excel sur le forum ??
Dsl je ne suis apparemment pas réveillé non plus, c'est arbre et non mouton que je recherche...
Enfin bref ta solution s'approche pas mal de ce que je souhaite faire mais il ne permet pas de concaténer les valeurs. Ici il n'y a qu'une seul valeur pas élément recherché?
Comment puis-je te transmettre un exemple en excel sur le forum ??
Ici il n'y a qu'une seul valeur pas élément recherché? Dans l'exemple que je t'ai passé oui. Mais s'il y en avait plusieurs elles s'afficheraient toutes...
Tu sais, pas besoin d'exemple, on a compris. Je vais te bricoler autre chose.
D'ici 1/2 heure ça ira?
Le temps d'un café, d'une cigarette (si tu fumes), sinon un bâton de réglisse et hop hop hop... ça roule?
Tu sais, pas besoin d'exemple, on a compris. Je vais te bricoler autre chose.
D'ici 1/2 heure ça ira?
Le temps d'un café, d'une cigarette (si tu fumes), sinon un bâton de réglisse et hop hop hop... ça roule?
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
Zut, j'suis allé trop vite... Mais bon j'ai triché, j'ai récupéré une macro ici...
Bon alors...
Supposons les valeurs à reporter (1,3,5,8) en Feuil1 colonne 1.
Supposons les valeurs à chercher (arbre) en Feuil1 colonne 2.
Supposons la saisie de "arbre" dans la feuille "Recherche" cellule B5.
Supposons que l'on veuille le résultat en feuille "Recherche" cellule C5.
Supposons que nous voulons concaténer les valeurs trouvées avec le signe ";".
Voici ma proposition :
En prime, un classeur exemple. Pour le tester, se placer sur la feuille recherche, saisir un nom en B5, Taper (mais pas trop fort) ALT+F8, choisir Recherche et Exécuter...
Bon alors...
Supposons les valeurs à reporter (1,3,5,8) en Feuil1 colonne 1.
Supposons les valeurs à chercher (arbre) en Feuil1 colonne 2.
Supposons la saisie de "arbre" dans la feuille "Recherche" cellule B5.
Supposons que l'on veuille le résultat en feuille "Recherche" cellule C5.
Supposons que nous voulons concaténer les valeurs trouvées avec le signe ";".
Voici ma proposition :
Sub Recherche()
Dim Cellule As Range
Dim Valeur As Variant
Dim Premiere As Variant
Dim Liste As String
Valeur = Sheets("Recherche").Range("B5").Value 'A ADAPTER
If Valeur <> "" Then
With Sheets(1).Columns(2).Cells 'on va chercher dans la colonne 2 de la feuille 1 A ADAPTER
Set Cellule = .Find(Valeur, LookIn:=xlValues)
If Not Cellule Is Nothing Then
Premiere = Cellule.Address
Do
'ici je vais enregistrer dans la variable liste toute les valeurs
'contenues dans la colonne A si je trouve valeur en B
Liste = Liste & ";" & Cellule.Offset(0, -1).Value
'action a faire dès que la ligne est trouvée
Set Cellule = .FindNext(Cellule)
Loop While Not Cellule Is Nothing And Cellule.Address <> Premiere
End If
End With
End If
Sheets("Recherche").Range("C5") = Right(Liste, Len(Liste) - 1)
End Sub
En prime, un classeur exemple. Pour le tester, se placer sur la feuille recherche, saisir un nom en B5, Taper (mais pas trop fort) ALT+F8, choisir Recherche et Exécuter...
Bonjour,
Pour aller à la ligne Chr(10) au lieu de ";".
Pour rechercher plusieurs valeurs, il faut faire une boucle comme ceci (les modifs en gras) :
Pour aller à la ligne Chr(10) au lieu de ";".
Pour rechercher plusieurs valeurs, il faut faire une boucle comme ceci (les modifs en gras) :
Sub Recherche()
Dim Cellule As Range
Dim Valeur As Variant
Dim Premiere As Variant
Dim Liste As String
Dim Lig As Integer, DerLig As Integer
DerLig = Range("B65000").End(xlUp).Row
For Lig = 5 To DerLig
Valeur = Sheets("Recherche").Range("B" & Lig).Value 'A ADAPTER
If Valeur <> "" Then
With Sheets(1).Columns(2).Cells 'on va chercher dans la colonne 2 de la feuille 1 A ADAPTER
Set Cellule = .Find(Valeur, LookIn:=xlValues)
If Not Cellule Is Nothing Then
Premiere = Cellule.Address
Do
'ici je vais enregistrer dans la variable liste toute les valeurs
'contenues dans la colonne A si je trouve valeur en B
Liste = Liste & Chr(10) & Cellule.Offset(0, -1).Value
'action a faire dès que la ligne est trouvée
Set Cellule = .FindNext(Cellule)
Loop While Not Cellule Is Nothing And Cellule.Address <> Premiere
End If
End With
End If
If Liste <> "" Then
Sheets("Recherche").Range("C" & Lig) = Right(Liste, Len(Liste) - 1)
Else
Sheets("Recherche").Range("C" & Lig) = "Aucune correspondance dans la feuille1"
End If
Liste = ""
Next
End Sub
Hello,
Une nouvelle fois merci beaucoup pour ton aide, ça marche impeccable !!
Bonne journée à toi et bonne vacances si tu en as !
Une nouvelle fois merci beaucoup pour ton aide, ça marche impeccable !!
Bonne journée à toi et bonne vacances si tu en as !