XL 2010 VBA - remplissage cellules adjacentes en fonction d'une liste

all_yver

XLDnaute Nouveau
Bonjour à tous,


Malgré les propositions faites sur mon précédent post, je n’ai pas eu de solution à mon problème :(

Je souhaiterais un code en VBA qui permetterait de par exemple lorsqu’on encode Michel Dupont en feuille 1 dans la cellule A2 que la cellule B2, C2, D2, E2 (qui sont protégées et contiennent une liste) se remplissent en fonction du tableau en feuille 2 mais tout en gardant la possibilité de remplir ces cellules manuellement, car il m'est impossible de prévoir tous les prénoms et noms.

Ce n'est peut-être pas très clair alors voici un fichier d'exemple.

Merci
 

Pièces jointes

  • Copie de Classeur1.xlsx
    12.1 KB · Affichages: 55
Solution
Il semble que tu te soit tromper en reprenant la modif find
il faux remplacer set nom....
Sub remplir(cellule)

Set nom = Sheets(2).UsedRange.Columns(1).Find(what:=cellule.Value, lookat:=xlWhole)
If Not nom Is Nothing Then

Set zone = Sheets(2).Range(Sheets(2).Cells(nom.Row, 2), Sheets(2).Cells(nom.Row, 5))
zone.Copy
cellule.Offset(0, 1).PasteSpecial (xlValues)


End If
End Sub

all_yver

XLDnaute Nouveau
Pas compris ton souci


En effet ce n’est pas très clair

Quand nous n’avons pas encore le nom, nous indiquons juste L’UA (colonne E) et donc ici en encodant l’UA (ou toutes autres données reprises dans le tableau) ça récupère les données des cellules adjacentes.
En gros, lorsque l’on encode des données qui correspondent à celles d’une autre colonne que la colonne A il ne devrait rien récupérer et laisser vide

Voici un exemple dans le fichier joint (surlignés en jaune )

Merci d'avance.
 

Pièces jointes

  • Copie de all-2(2).xlsm
    19.8 KB · Affichages: 63

sousou

XLDnaute Barbatruc
Il semble que tu te soit tromper en reprenant la modif find
il faux remplacer set nom....
Sub remplir(cellule)

Set nom = Sheets(2).UsedRange.Columns(1).Find(what:=cellule.Value, lookat:=xlWhole)
If Not nom Is Nothing Then

Set zone = Sheets(2).Range(Sheets(2).Cells(nom.Row, 2), Sheets(2).Cells(nom.Row, 5))
zone.Copy
cellule.Offset(0, 1).PasteSpecial (xlValues)


End If
End Sub
 

all_yver

XLDnaute Nouveau
Il semble que tu te soit tromper en reprenant la modif find
il faux remplacer set nom....
Sub remplir(cellule)

Set nom = Sheets(2).UsedRange.Columns(1).Find(what:=cellule.Value, lookat:=xlWhole)
If Not nom Is Nothing Then

Set zone = Sheets(2).Range(Sheets(2).Cells(nom.Row, 2), Sheets(2).Cells(nom.Row, 5))
zone.Copy
cellule.Offset(0, 1).PasteSpecial (xlValues)


End If
End Sub

En effet, tout est OK maintenant, pour la casse j'ai ajouté :
Set nom = Sheets(2).UsedRange.Columns(1).Find(what:=cellule.Value, MatchCase:=True, lookat:=xlWhole)

Merci beaucoup t'es un chef :)
 

Discussions similaires

Statistiques des forums

Discussions
312 084
Messages
2 085 192
Membres
102 809
dernier inscrit
Sandrine83