numéro de colonne d'un nom selectionné dans une liste ?

  • Initiateur de la discussion Initiateur de la discussion Blues
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

B

Blues

Guest
Bonjour Forum,

J'ai une macro, qui ouvre une fenêtre dans laquelle une liste de nom apparait (ces noms proviennent des celulles A1 ; B1 ; C1 ; D1 ; etc... bref, ils sont sur la 1ère ligne). Ce que j'aimerais faire, mais que je n'arrive pas, se serait qu'une fois que j'ai selectionné le nom qui m'intéresse. Il faudrait que j'aie le code qui de manière invisible récupère le numéro de colonne de ce nom dans la feuille, et l'inscrive dans une variable "colvar".

colvar = "numéro de colonne du nom selectionné"

Je pense qu'il s'agit d'une ligne de code pour faire ça, mais je ne trouve pas comment. Sinon, + long, avec un ami, on imaginais de faire qu'une fois le nom selectionné, il vérifie toutes les cases de la première ligne, et quand il trouve le même terme, il récupère le numéro de colonne et le place dans une variable. Mais je me demande, si on lui fait pas faire deux fois le même travail.

Si vous avez une solution, je serais très intéressé.

Merci d'avance
 
Bonjour,

en insérant le code suivant, tu devrais pouvoir obtenir facilement ton résultat :

'***********************************************

Sub Trouve_Colonne

Dim C 'objet recherché
Dim StrNom as string ' la valeur recherchée ligne 1

' récupère sur ton userform la valeur à chercher
StrNom= userform.list1.value

With ThisWorkbook.Worksheets("Feuil1").Rows(1)
Set C = .Find(StrNom, LookIn:=xlValues)
If Not C Is Nothing Then colvar=C.Column
End With

End sub

'**********************************************

En espérant que cela réponde au problème. Bonne continuation ! :0)

Clément

"S'il n'y a pas de solution, c'est qu'il n'y a pas de problème."
 
Bonjour Clément,

En fait ton code fonctionne bien à un détail près, c'est qu'il me renvoi l'information contenu dans la igne 1. Qui est, ici, un nom. Donc, vu qu'il est ensuite mis dans une formule, il l'accepte plutôt mal. Il faudrait juste, qu'il ressorte le numéro de la colonne (donc si colonne D --> numéro : 4 ) !!

Mais sinon, ça à l'air parfait. Je regardes aussi de mon côté pour transformer juste ce détail. Si tu as une solution déjà toute faîte, je suis preneur. 🙂

Merci encore
 
Re,

j'ai testé le code plusieurs fois et il me retourne bien la valeur de la colonne et non le contenu de la cellule (debug.print colvar)...
As-tu placé ou utilisé le code au bon moment dans ta procédure ?

Clément
 
Bonjour Clément, Robert, Fodjio,

Clément > Oui, il me semble que c'est au bon endroit, mais comme je suis néophite en la matière, qui sait ... 🙂 Si jamais, j'ai mis en fichier joint, ma macro.

Robert > ça m'a l'air d'être ça... maintenant, vu que je suis qqlu de très curieux, je vais continuer sur la méthode de Clément, juste pour voir pourquoi chez moi elle ne veut pas fonctionner... J'ai horreur d'être contrarié de la sorte... 🙂


Merci encore.

A+
 

Pièces jointes

Re, re, 😎

essaie juste de rajouter dans ton code la déclaration

Dim colvar as integer

Ce qui permet à VBA de bien gérer un chiffre
Cela devrait mieux fonctionner.
Sinon, tu peux insérer la commande "debug.print colvar" juste en dessous de End With afin de voir dans la fenêtre 'Immediate' le résultat.

Clément
 
Re,

Négatif, ça ne fonctionne pas 🙁 Et je ne comprend pas pourquoi. Pourtant, il me semble que j'ai tout fait correctement. Argggggggg ... Pas craquer (mppffff), calme... (Fffiiiooouu)

Bon, j'essaye encore de trouver d'où vient le prob. Mais j'ai beau retourné le code dans tous les sens, rien n'y fait.
 
Re, re-, re- 😎

si j'ai bien suivi, ta variable colvar n'est destinée à ne retourner que le numéro de la colonne dans laquelle se situe le nom cherché c'est bien ça ?

Insère les deux lignes suivantes sous le 'End With'

debug.print colvar
stop

Comme ça l'éxecution de la macro s'arrêtera et tu pourras voir le résultat affiche dans la fenêtre immédiate sans tout exécuter...
Etrange quand même, à moins que l'on ne parle pas de la même chose ! :0)

Clément
 
Re,

Je le place peut-être pas au bon endroit. Vu qu'après je suis censé le mettre dans ma formule recherchev (vlookup). Je dois peut-être le faire s'arreter plus loin... Et sinon, c'est normal que le stop me fasse planter ma macro ??

Merci de m'aider à ce point .
 
Re,

Voilà, afin de faire plus vide, je vous transmet dans ce nouveau fichier joint, mon classeur excel, dans lequel vous devrez importer la macro (qui est également dans le fichier zip), et un classeur nommer indices qui est le classeur source (où la macro va chercher une partie de la liste, et les informations contenant pour chaque indice.


Si qqlu, arrive à trouver le prob avec tout ça. Bravo et merci
 

Pièces jointes

sub recherche_nom()
x = 1
t = "Feuil1"
While Feuil1.Cells(x, 1) <> ""
If Sheets(t).Cells(x, 10) = UserForm1.ComboBox1.Value Then
z = x
Sheets("Feuil2").Cells(x, 1) = Userform1.ComboBox1.Value

End If
x = x + 1
Wend
Feuil2.Cells(1, 2) = y
Feuil2.Cells(2, 2) = z
End Sub

w = 1
While Feuil2.Cells(w, 1) <> UserForm1.ComboBox1.Value
w = w + 1
Feuil2.Cells(3, 2) = w
Wend
w = Feuil2.Cells(3, 1)

ensuite, fais la même chose pour les colonnes 2, 3 ....

Envoie moi ton fichier sinon

@+
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD
Assurez vous de marquer un message comme solution pour une meilleure transparence.

Discussions similaires

Retour