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
Bonjour
Tu peux essayer ceci

Waouh super tout à fait ce que je cherchais ! J'ai un peu galéré pour imbriqué ça dans les codes existants, mais maintenant ça marche nickel.
Le seul petit souci c'est que ça récupère également la mise en forme de la feuille de données, enfin il suffit juste d'utiliser la même mise en forme, bordures, etc.

Mille mercis, je suis trop content :D
 

sousou

XLDnaute Barbatruc
Re
Tu remplaces
zone.Copy cellule.Offset(0, 1)
par
zone.copy
cellule.Offset(0, 1).PasteSpecial (xlValues)
N'oublie pas que je ne traite pas la casse dans la reconnaissance du nom
si tu le souhaites la respecter,
Il faut mettre
Set nom = Sheets(2).UsedRange.Find(cellule.Value,Matchcase:=true)
 
Dernière édition:

all_yver

XLDnaute Nouveau
Re
Tu remplaces
zone.Copy cellule.Offset(0, 1)
par
zone.copy
cellule.Offset(0, 1).PasteSpecial (xlValues)
N'oublie pas que je ne traite pas la casse dans la reconnaissance du nom
si tu le souhaites la respecter,
Il faut mettre
Set nom = Sheets(2).UsedRange.Find(cellule.Value,Matchcase:=true)

Merci, ça fonctionne bien pour la mise en forme en ce qui concerne la casse je ne vois pas de différence, par contre j'ai remarqué que certaines fois lorsque l'on indique un nom, ça récupère les données encodées plus haut dans le tableau et pas celles de la feuille de données, je ne comprends pas
 

all_yver

XLDnaute Nouveau
Merci, ça fonctionne bien pour la mise en forme en ce qui concerne la casse je ne vois pas de différence, par contre j'ai remarqué que certaines fois lorsque l'on indique un nom, ça récupère les données encodées plus haut dans le tableau et pas celles de la feuille de données, je ne comprends pas

Apparemment, je n'ai plus ce problème, par contre j'ai remarqué un gros problème ; lorsque l'on indique n'importe quelle lettre qui apparait dans la feuille des données les cellules se remplissent avec un peu n'importe quoi :(

Regarde dans l'exemple ça le fait aussi !
 

Pièces jointes

  • Copie de all-2(2).xlsm
    19.3 KB · Affichages: 81

all_yver

XLDnaute Nouveau
j'ai remarqué un gros problème ; lorsque l'on indique n'importe quelle lettre qui apparait dans la feuille des données les cellules se remplissent avec un peu n'importe quoi :(

Regarde dans l'exemple ça le fait aussi !

Bonjour,

J'essaye de trouver une syntaxe supplémentaire pour faire en sorte qu'il ne copie les informations que lorsque le prénom + nom exacts sont saisi, mais je ne trouve pas... Help :(
 

sousou

XLDnaute Barbatruc
Tu trouveras cei dans l'aide excel
L'otion matchcase =true respectera la casse
Référence du développeur Excel
Range.Find, méthode
Cette méthode recherche des informations spécifiques dans une plage.
Syntaxe

expression.Find(What, After, LookIn, LookAt, SearchOrder, SearchDirection, MatchCase, MatchByte, SearchFormat)

expression Variable qui représente un objet Range.

Paramètres

Nom Obligatoire/Facultatif Type de données Description
What Obligatoire Variante Données à rechercher. Il peut s'agir d'une chaîne ou de tout autre type de données Microsoft Excel.
After Facultatif Variante Cellule après laquelle vous souhaitez commencer la recherche. Cela correspond à la position de la cellule active lorsqu'une recherche est effectuée à partir de l'interface utilisateur. Notez que l'argument Après doit correspondre à une seule cellule de la plage. Rappelez-vous que la recherche commence après cette cellule ; la cellule spécifiée n'est pas recherchée jusqu'à ce que la méthode revienne à cette cellule. Si vous ne spécifiez pas cet argument, la recherche commence après la cellule située dans le coin supérieur gauche de la plage.
LookIn Facultatif Variante Type d'informations.
LookAt Facultatif Variante Il peut s'agir de l'une des constantes XlLookAt suivantes : xlWhole ou xlPart.
SearchOrder Facultatif Variante Il peut s'agir de l'une des constantes XlSearchOrder suivantes : xlByRows ou xlByColumns.
SearchDirection Facultatif Lien supprimé Direction de la recherche.
MatchCase Facultatif Variante True pour que la recherche respecte la casse. La valeur par défaut est False.
MatchByte Facultatif Variante S'utilise uniquement si vous avez sélectionné ou installé la prise en charge des langues codées sur deux octets. True pour que les caractères codés sur deux octets ne correspondent qu'aux caractères codés sur deux octets. False pour que les caractères codés sur deux octets correspondent à leurs équivalents codés sur un octet.
SearchFormat Facultatif Variante Format de la recherche.
 

Discussions similaires

Statistiques des forums

Discussions
311 720
Messages
2 081 913
Membres
101 837
dernier inscrit
Ugo