Remplir une cellule automatiquement grâce à un champ de validation "Liste"

Feitan

XLDnaute Nouveau
Bonour tout le monde !

Honnêtement, je ne sais pas si ce que je vais demander est possible. Ce serait juste merveilleux mais bon, ne nous emballons pas :D

Voilà, je possède 2 classeurs, A et B. Je veux remplir A avec les données de B.

B est en fait une sorte de dictionnaire, avec sur chaque feuille la définition d'un mot précis.

Ce que j'aimerai, c'est que sur A, lorsque je vais dans ma case "définition", je puisse à partir d'une liste déroulante qui contient tous les "titres" de définitions possible, lorsque j'en sélectionne une et que je valide, et bien la cellule se remplit automatiquement avec la définition qui se trouve sur la feuille du document B qui porte le même nom que le choix que j'ai fait dans la liste déroulante.


Raaa je sais on y comprends pas grand chose, mais est-ce possible et si oui comment ?

Vous trouverez joint 2 fichiers A et B pour mieux illustrer mes propos.
Merci beaucoup !
 

Pièces jointes

  • Classeur A.xls
    15.5 KB · Affichages: 131
  • Classeur B.xls
    13.5 KB · Affichages: 132
  • Classeur A.xls
    15.5 KB · Affichages: 136
  • Classeur B.xls
    13.5 KB · Affichages: 128
  • Classeur A.xls
    15.5 KB · Affichages: 131
  • Classeur B.xls
    13.5 KB · Affichages: 135

job75

XLDnaute Barbatruc
Re : Remplir une cellule automatiquement grâce à un champ de validation "Liste"

Bonjour Feitan,

Tout à fait possible.

Voici la macro à placer dans le code de la Feuil1 du Classeur A (clic droit sur l'onglet et Visualiser le code) :

Code:
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Address <> "$C$5" Then Exit Sub
[COLOR="Red"]Application.EnableEvents = False[/COLOR]
On Error Resume Next
Target.Value = Workbooks("Classeur B.xls").Sheets(Target.Value).Range("A2")
[COLOR="Red"]Application.EnableEvents = True[/COLOR]
End Sub

Les 2 classeurs doivent être ouverts.

Edit : j'ai mis les 2 lignes en rouge par sécurité (et surtout par habitude), mais en fait on peut les supprimer.

A+
 
Dernière édition:

Feitan

XLDnaute Nouveau
Re : Remplir une cellule automatiquement grâce à un champ de validation "Liste"

J'ai testé, c'est super ça marche... mais pas comme je le voudrais :confused:
En fait lorsque le texte de la définition (plusieurs vingtaine de ligne) est trop long, et bien ça ne réagit pas.

Alors que sur la même case, avec un texte très court, cela marche.
Une idée sur comment résoudre ce souci :) ?


Merci !
 
Dernière édition:

Feitan

XLDnaute Nouveau
Re : Remplir une cellule automatiquement grâce à un champ de validation "Liste"

Revoilà les 2 docs avec une définition plus longue pour "chien", et donc ça ne marche pas alors que les autres fonctionnent très bien :(
 

Pièces jointes

  • Classeur A.xls
    23.5 KB · Affichages: 133
  • Classeur A.xls
    23.5 KB · Affichages: 126
  • Classeur A.xls
    23.5 KB · Affichages: 130
  • Classeur B.xls
    15 KB · Affichages: 162
  • Classeur B.xls
    15 KB · Affichages: 161
  • Classeur B.xls
    15 KB · Affichages: 152

job75

XLDnaute Barbatruc
Re : Remplir une cellule automatiquement grâce à un champ de validation "Liste"

Re,

Je vois, mais j'avais préparé quelque chose (fichiers joints) :

- les définitions sont dans des plages de cellules

- la plage choisie est copiée et collée dans le classeur A

- la largeur de colonne est aussi copiée.

A priori ça paraît mieux que dans une seule cellule, dont il faudrait ajuster aussi la hauteur.

La macro a été modifiée bien sûr :

Code:
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Address <> "$C$5" Then Exit Sub
Range(Target.Offset(1), Target.Offset(500)).Clear
On Error Resume Next
With Workbooks("Classeur B.xls").Sheets(Target.Value).Range("A2:A501")
If Err Then Exit Sub
.Copy Target.Offset(1)
Target.ColumnWidth = .ColumnWidth
End With
Target.Select
End Sub

A+
 

Pièces jointes

  • Classeur A.xls
    25.5 KB · Affichages: 114
  • Classeur A.xls
    25.5 KB · Affichages: 117
  • Classeur A.xls
    25.5 KB · Affichages: 119
  • Classeur B.xls
    34 KB · Affichages: 135
  • Classeur B.xls
    34 KB · Affichages: 132
  • Classeur B.xls
    34 KB · Affichages: 142
Dernière édition:

job75

XLDnaute Barbatruc
Re : Remplir une cellule automatiquement grâce à un champ de validation "Liste"

Re,

Maintenant dans une seule cellule.

La macro est un peu modifiée (attention le nom du classeur aussi) :

Code:
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Address <> "$C$5" Then Exit Sub
Target.ColumnWidth = 30
Target.Offset(1).RowHeight = 12.75
Target.Offset(1).Clear
On Error Resume Next
With Workbooks("Classeur B (1).xls").Sheets(Target.Value).Range("A2")
If Err Then Exit Sub
.Copy Target.Offset(1)
Target.ColumnWidth = .ColumnWidth
Target.Offset(1).RowHeight = .RowHeight
End With
Target.Select
End Sub

Vous choisirez la solution que vous préférez.

A+
 

Pièces jointes

  • Classeur A (1).xls
    27.5 KB · Affichages: 163
  • Classeur B (1).xls
    22.5 KB · Affichages: 138

Discussions similaires

Statistiques des forums

Discussions
312 240
Messages
2 086 514
Membres
103 239
dernier inscrit
wari