[VBA]recherche d'une valeur "X" dans une matrice

cs_sd69 Messages postés 2 Date d'inscription mercredi 14 décembre 2011 Statut Membre Dernière intervention 15 décembre 2011 - 14 déc. 2011 à 18:03
gourmand86 Messages postés 33 Date d'inscription mercredi 6 octobre 2010 Statut Membre Dernière intervention 9 janvier 2012 - 20 déc. 2011 à 14:31
Bonjour,

Je cherche à faire en VBA une recherche de la valeur "X" dans une matrice.
Ex :
étape 1 :
pour une ligne donnée, je souhaite chercher l'ensemble des valeurs "X" de mon tableau.
étape 2 : à chaque fois que la valeur "X" et trouvé, je souhaite récupérer le nom de l'entête de colonne (ex :N°46) et le copier dans mon onglet "synthèse"

je souhaiterais ainsi que cette recherche soit faite sur l'ensemble de mes lignes.

Voici un exemple excel.

Pouvez-vous me donner des pistes ?

Merci.

4 réponses

ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 234
14 déc. 2011 à 18:37
Bonjour,

1) VBA n'est pas VB6 !
Nous te serions reconnaissant de bien vouloir dorénavant apporter le plus grand soin au choix de la section dans laquelle tu ouvre une discussion (c'est important)
2) ton
Voici un exemple excel
est probablement un fichier que tu es seul à pouvoir voir (un lien vers ton disque).
Il n'est à ce propos ni utile ni recommandé de procéder par "mise à disposition d'un classeur"
Tes explications, par contre, ne sont pas vraiment claires, notamment en ce qui concerne l'étape 1

Nous aimerions enfin que tu nous montres le code que tu as au moins tenté d'écrire.


____________________
Réponse exacte ? => "REPONSE ACCEPTEE" pour faciliter les recherches d'autres forumeurs.
Pas d'aide en ligne installée ? ==> ne comptez pas sur moi pour simplement vous dire ce qu'elle contient
0
cs_sd69 Messages postés 2 Date d'inscription mercredi 14 décembre 2011 Statut Membre Dernière intervention 15 décembre 2011
15 déc. 2011 à 14:39
Bonjour,

Voici le bout de code que j'ai rédigé et qui me fait la recherche sur la première ligne et la première valeur rencontrée.
Il me recopie bien l'entete de colonne dans un autre onglet.

Par contre, je souhaiterai maintenant que cela me recherche la seconde valeur sur la ligne 1 de ma plage, que cela la copie en N3 sur l'onglet Synthèse et
ensuite que cela boucle sur la ligne suivante.

D'avance merci.
-----------------------------------------------
Sub test()
'
' Test Macro

'sélection de l'onglet
Sheets("Matrice").Select

valeur = "X" '

' sélectionne la plage dans laquelle la recherche est effectuée

Range("K3:IN" & Range("IN65536").End(xlUp).Row).Select

'recherche de la valeur X dans la ligne
ActiveSheet.Cells.Find(What:=valeur, After:=ActiveCell, LookIn:=xlFormulas, LookAt:= _
xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext, MatchCase:=False) _
.Select

Selection.End(xlUp).Select

Selection.Copy

Sheets("Synthèse").Select
Range("M3").Select
ActiveSheet.Paste

End Sub
0
ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 234
15 déc. 2011 à 16:15
Ce bout de code ne nous apporte pas non plus des explications claires sur les tenants et aboutissants exacts !
Veux-tu bien les exposer avec précisions, s'il te plait ?


____________________
Réponse exacte ? => "REPONSE ACCEPTEE" pour faciliter les recherches d'autres forumeurs.
Pas d'aide en ligne installée ? ==> ne comptez pas sur moi pour simplement vous dire ce qu'elle contient
0
gourmand86 Messages postés 33 Date d'inscription mercredi 6 octobre 2010 Statut Membre Dernière intervention 9 janvier 2012
20 déc. 2011 à 14:31
Voila comment j’aurais fais :
Dim j As inetger
j = 1
For i = 1 To 20
    If Sheets("tableau").Cells(i, 2) = X Then 'recherche X dans la ligne
        'si on trouve X, on copie l'entète dans la feuil synthèse
        Sheets("synthèse").Cells(1, j) = Sheets("tableau").Cells(i, 1)
    End If
Next i
0