ou se cache toto ?

C

carlos

Guest
Bonjour

je souhaiterais connaitre dans quelle colonne d'un tableau se trouve la valeur "toto".

Merci
 
H

Hervé

Guest
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.
 
C

carlos

Guest
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
 
J

Jean-Marie

Guest
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:D11="toto")*COLONNE(B4:D11);NB.SI(B4:D11;"<>"&"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:D11="toto")*COLONNE(B4:D11);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
 
H

Hervé

Guest
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é
 
J

Jean-Marie

Guest
Re...

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

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:D11="toto")*COLONNE(B4:D11);NB.SI(B4:D11;"<>"&"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:D11="toto"), VRAI ou FAUX, elle sera stocker en mémoire.

La seconde Matrice aura le résultat de la fonction COLONNE(B4:D11)

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:D11;"<>"&"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
 

Discussions similaires

Statistiques des forums

Discussions
312 972
Messages
2 094 055
Membres
105 930
dernier inscrit
Manoa