![]() |
|
Forum
|
|
|
#2 (permalink) |
|
Guest
Messages: n/a
|
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. |
|
|
#5 (permalink) |
|
Guest
Messages: n/a
|
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 |
|
|
#6 (permalink) |
|
Guest
Messages: n/a
|
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 |
|
|
#11 (permalink) |
|
Guest
Messages: n/a
|
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é |
|
|
#12 (permalink) |
|
Guest
Messages: n/a
|
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 [b]matrice[b]. 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 |
| Liens sociaux |
| Outils de la discussion | |
|
|