Complément de code : Afficher le contenu d'une cellule selon le choix

Feitan

XLDnaute Nouveau
Bonjour à tous !

Il y a quelques temps, une personne de ce forum m'avait généreusement apporter son aide sur une macro.

Sa fonction était la suivante :
Selon le choix d'une liste déroulante en B20 sur le classeur A, un texte se copiait dans la cellule d'en dessous, B21.

Ce texte était tiré d'un autre document excel, le classeur B, appelé "DEFINITIONS", qui contient l'ensemble des définitions, avec pour chaque feuille de ce classeur, une nouvelle définition.

La macro allait donc chercher le nom de la feuille du classeur B correspondant au nom choisi en B20 du classeur A, puis sur cette feuille copiait la cellule de la définition (en B2) pour la coller en B21 du classeur A.

Vous me suivez ^^; ?

Pour info, voici le code que l'on m'avait fourni et qui marche très bien :

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

Ce que j'aimerai aujourd'hui, c'est simplement apporté une légère amélioration à ce code en fonction de mes contraintes professionnelles.

En fait, j'aimerai que la macro fasse toujours la même chose, mais qu'en plus de la cellule B2 du classeur DEFINITIONS, elle copie également les cellules B4 et B6.

Le contenu de la cellule B2 était collé en B21 du classeur A, pour B4 et B6 je souhaiterais qu'elles soient collés en B23 et B25 de la même façon.

Voilà, j'espère avoir été assez clair :)

Merci d'avance !
 

gwenlorin

XLDnaute Occasionnel
Re : Complément de code : Afficher le contenu d'une cellule selon le choix

Bonjour Feitan,

en adaptant le code au plus rapide je dirais :

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

Discussions similaires

Statistiques des forums

Discussions
312 188
Messages
2 086 028
Membres
103 100
dernier inscrit
erym64300