• Initiateur de la discussion Initiateur de la discussion carlos
  • 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 !

Bonjour

en VBA

Public Sub vev()
Dim trouvétoto As Range
Set trouvétoto = Range("a1:iV65000").Find("toto", LookIn:=xlValues)
If trouvétoto Is Nothing Then MsgBox "Aucun toto trouvé.": Exit Sub
MsgBox "toto se trouve en colonne " & Left(trouvétoto.Address(0, 0), (trouvétoto.Column < 27) + 2)
End Sub

Attention cette macro s'arrete sur le premier toto trouvé.

Salut
Hervé

PS : si un jour je dois rechercher une macro avec .find, je ne crois pas que j'utiliserai "toto" dans le moteur de recherche du site. attention au titre de post.
 
tu as raison pour le nom "toto",je ne l'avais pas vu sous cette angle de recheche dans un forum .

Sinon ta macro est fonctionnelle . Merci

comment je peux recuperer ce numero de colonne (6;par exemple)pour le coller en cellule A2.
Merci
 
Bonjour

Pour compléter la réponse de Michel.
La fonction sommeprod va additionner les numéros de toutes les colonnes qui contiennent le terme "toto".

Voici deux formules matricielles (à valider par Ctrl+Shift+Entrer), qui permettent de connaître tous les emplacements du terme "toto".

En commençant par la gauche :
=PETITE.VALEUR((B4😀11="toto")*COLONNE(B4😀11);NB.SI(B4😀11;"<>"&"toto")+1)
en incrémentant la valeur 1 (deux 2ème argument de Petie.valeur), on obtient les différentes colonnes contenant le terme "toto"

En commençant par la droite :
=GRANDE.VALEUR((B4😀11="toto")*COLONNE(B4😀11);1), 2ème argument identique à la première formule.

Carlos, veux-tu le numéro de la colonne, la colonne "C" ou l'entête dans ton tableau "Nom" ?

@+Jean-Marie
 
Re

Pour carlos : je ne sais pas si tu es parti sur du vba ou par formule, pour le vba regarde la suite, pour la formule attend Michel ou jean-marie.

remplace :
MsgBox "toto se trouve en colonne " & Left(trouvétoto.Address(0, 0), (trouvétoto.Column < 27) + 2)
par :
Range("a2").Value = trouvétoto.Column

Pour Michel_M : tu ne déranges jamais bien au contraire, ta formule est au top .

Pour jean-marie : Je n'arrive pas à appliquer ta formule le Ctrl+Shift+Entrer me renvoi #valeur (snif !!!! je suis nul), pourrait-tu prendre 3 mn de ton précieux temps pour nous expliquer cette formule énigmatique pour moi.

D'avance merci

Salut
Hervé
 
Re...

Pas de problèmes, suivant cet exemple, valeurs contenues dans la plage B4😀11.

A ! A ! A
A ! toto ! A
A ! A ! A
A ! A ! A
A ! A ! toto
A ! A ! A
A ! A ! A
toto ! A ! A

=PETITE.VALEUR((B4😀11="toto")*COLONNE(B4😀11);NB.SI(B4😀11;"<>"&"toto")+1)

Comme la fonction de Michel (j'ai repris sa base) elle utilise une matrice.

La première Matrice sera constituée de résultat du comparateur (B4😀11="toto"), VRAI ou FAUX, elle sera stocker en mémoire.

La seconde Matrice aura le résultat de la fonction COLONNE(B4😀11)

Contenu de la 1ère matrice
{FAUX . FAUX . FAUX ;
FAUX . VRAI . FAUX ;
FAUX . FAUX . FAUX ;
FAUX . FAUX . FAUX ;
FAUX . FAUX . VRAI ;
FAUX . FAUX . FAUX ;
FAUX . FAUX . FAUX ;
VRAI . FAUX . FAUX }

Contenu de la 2ème Matrice
{2 . 3 . 4 ;
2 . 3 . 4 ;
2 . 3 . 4 ;
2 . 3 . 4 ;
2 . 3 . 4 ;
2 . 3 . 4 ;
2 . 3 . 4 ;
2 . 3 . 4 }

Partie le symbole * on va cumuler les deux matrices. Vrai correspond à une valeur numérique de 1 et FAUX correspond à 0. En cumulant VRAI ou FAUX, Excel transforme automatiquement VRAI et FAUX.

Le résultat de la matrice retournée à la fonction PETITE.VALEUR sera celle-ci
{0 . 0 . 0 ;
0 . 3 . 0 ;
0 . 0 . 0 ;
0 . 0 . 0 ;
0 . 0 . 4 ;
0 . 0 . 0 ;
0 . 0 . 0 ;
2 . 0 . 0 }

Cette fonction trie par ordre croissant les valeurs contenues dans la matrice, et retourne la valeur en fonction d'un rang (2ème argument).
{0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0 ; 2 ; 3 ; 4}

NB.SI(B4😀11;"<>"&"toto") retourne le nombre de données dans la plage de cellules qui sont différentes de "toto", il faut additionner 1 pour avoir la valeur du rang de la 1ère colonne contenant le terme "toto", dans notre cas 21+1.

J'espère que mes explications te permettront d'apprivoiser la puissance des fonctions matricielles.

@+Jean-Marie
 
- 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

Réponses
4
Affichages
224
Réponses
2
Affichages
120
Réponses
10
Affichages
687
Retour