Index/Equiv

Bonjour,

J'aurais deux questions en espérant que quelqu'un puisse m'aider.

J'ai créer une liste déroulante à actualisation automatique et référencement à une autre cellule grâce à la formule INDEX/EQUIV

Cette dernière fonctionne très bien, je l'ai trouvé sur Internet, cependant pour pouvoir ultérieurement la réappliquer j'ai une question :

Si ma formule est =INDEX(B1:B3;EQUIV(B6;A2:A3;0);1) Je ne comprends pas à quoi correspond le 1 tout à la fin, à savoir que sans ça, ma formule ne fonctionne pas.

Deuxième question, j'ai désormais ma liste déroulante qui affiche l'élément voulu dans la cellule choisis, cependant, je voudrais que cette liste déroulante me permette de remplir un tableau. C'est à dire qu'il faudrait que soit reconnues les cellules remplies et que lorsque celle-ci est remplie, ma sélection se remplisse dans la cellule en dessous.

Je ne sais pas si c'est très clair.

J'espère avoir vos réponses rapidement.

En vous remerciant d'avance.

Cordialement

Bonsoir et bienvenu sur le forum,

Pour répondre à ta première question :

Le Chiffre 1 correspond à la PREMIERE COLONNE de la matrice de la fonction INDEX. A priori, la matrice (B1:B3) ne possédant qu'une seule colonne(B), même sans le numéro de la colonne 1,cela devrait normalement marcher si tu mets ta formule comme celle-ci :

=INDEX(B1:B3;EQUIV(B6;A2:A3;0))

Pour ta 2è question, il va falloir des précisions ou bien nous fournir ton fichier pour une meilleure compréhension.

Merci pour l'info pour la formule, j'oubliais une parenthèse c'est pour ça que elle ne marchait pas sans! Merci!

Pour mon autre question pour simplifier j'ai refait un fichier d'exemple d'application :

https://www.excel-pratique.com/~files/doc/excel_essai.jpg

En fait, je souhaite qu'en sélectionnant un produit dans le déroulé, les différentes colonnes du tableau se remplissent, mais aussi les lignes (grâce à la base de données, ici en haut à gauche)

Parce que là dès que je touche au déroulé c'est la tjs la ligne 12 qui change! Je voudrais (je pense par macro) faire en sorte que lorsque la cellule e12 est remplie ca passe automatiquement à la ligne e13.

Merci de votre aide.

Re,

Une copie d'image, ce n'est pas idéal pour exploiter. Essaye la formule suivante dans les colonnes E et G :

=INDEX(A$2:A$7;EQUIV($F12;$B$2:$B$7;0))
14n-steph.xlsm (71.39 Ko)

Bonsoir,

Kiki57, de la façon dont tu as créé ta liste, tu ne peux alimenter qu'une seule cellule (F12)

Il faut que tu fasse ta liste dans les cellules de la colonne F en passant par la validation de données. (Autoriser = Liste ; Source = $B$2:$B$7).

Amicalement

Nad

Etant donné que j'ai utilisé des plages de cellules renommées, je ne peux les verouiller par $

Je vous joint le fichier afin que vous puissiez voir de vous même! Merci

https://www.excel-pratique.com/~files/doc/liste_deroulee.xls

Il me semble que je dois utiliser une macro du genre :

MsgBox Application.WorksheetFunction.CountA(Rows(ActiveCell.Row)) = 0

Mais je ne sais pas avec quoi elle doit être mêlée.

Sinon il y a ces formules :

=NBVAL(1:1)=0

=COUNTA(1:1)=0

Mais ça me renvoit à VRAI ou FAUX et ce n'est pas ce que je veux!

Désolée ce n'est pas très facile! Mais on m'a dit que c'était impossible à faire ou difficilement sans une macro!

MERCI à vous

Re

OK, l'image était trompeuse ; tu utilises bien une liste de validation.

Au lieu de la mettre en H2, tu sélectionnes de F12 à F20 puis tu vas dans DONNEES ==> Validation - dans Source, tu mets =maliste2

Maintenant, en E12, tu modifies la formule :

=INDEX(maliste;EQUIV($F$12;maliste2;0))

Tu modifies de la même façon les autres formules

Amicalement

Nad

Re

Je te renvoies ton fichier ; j'ai redéfini les noms pour que tu puisses ajouter des données dans tes listes et qu'elles soient prises en compte automatiquement :

Fichier

Amicalement

Nad

J'ai fait ce que vous m'avez dit, sauf que le résultat final n'est pas du tout ce que je recherche.

Avec votre formule, désormais je ne sélectionne plus en H2 mais en F12, F13 ...

Or moi je souhaite conserver la liste en H2 et que lorsque je sélectionne un produit dans le déroulé, il affiche dans la 1ère cellule disponible dans la plage concernée qui est donc ici F12:F20.

Si la cellule n'est pas disponible, ma sélection glissera au fur et à mesure jusqu'à trouver une cellule disponible.

C'est possible?

Bonsoir à tous,

regarde si c'est çà que tu souhaite.

https://www.excel-pratique.com/~files/doc/liste_deroul2.xls

amicalement

Claude.

Merci Mad-Dan

Apparemment ça ne s'est pas affiché dans le fichier joint, mais j'avais déjà une actualisation en place.

J'avais utilisé la formule =DECALER.

Et donc dès que j'ajoute une donnée elle s'intègre automatiquement dans la liste.

Mais merci tout de même

Non Claude ce n'est malheureusement pas ce que je recherche

Je vais finir par me dire que ce n'est pas possible...

Ne désespère pas, c'est possible.

Il te faut une macro ; je ne sais pas la faire, mais pour les amis Vbaïstes qui voudraient bien t'aider, voici ta demande :

COMBOBOX en H12

A chaque validation de la liste, inscription dans la 1ère cellule non vide de F (au départ, il s'agit donc de F12).

Remplir les colonnes E et G avec un décaler de la valeur de la cellule F

Prévoir un bouton Clearcontent. de E12:H20

Y A PLUS QU'A ... comme dirait l'autre !

Amicalement

Nad

re,

en relisant depuis le début, j'ai cru comprendre !

Fichier :

https://www.excel-pratique.com/~files/doc/liste_deroul3.xls

Claude.

Bonsoir,

Comme Nad en parlait, vois le fichier joint par programmation.

Fichier

Amicalement

Dan

Merci à Claude et à Dan, c'est exactement ce que je cherchais à faire!

Cependant, je suis débutante en macro et je ne connais pas encore tous les langages (et ne maitrise pas très bien l'anglais). Donc si vous pouviez chacun m'expliquer (vos macros sont différentes) étape par étape ce que signifie chaque information de la macro je vous en serais très reconnaissante.

En vous remerciant encore pour votre aide précieuse!!

Macro Dan :

Private Sub Worksheet_Change(ByVal Target As Excel.Range)

End Sub

Macro Claude (qui me semble beacoup plus simple, y a-t-il une différence de performance entre les deux?) :

Sub RangeTableau()

End Sub

Merci

Rechercher des sujets similaires à "index equiv"