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
 

Fichiers joints

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 Accro
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 !
 

Fichiers joints

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 Accro
Bonjour
remplace cette ligne ainsi et regarde les options de rang.find pour eventuellement la casse
Set nom = Sheets(2).UsedRange.Columns(1).Find(what:=cellule.Value, lookat:=xlWhole)
 

all_yver

XLDnaute Nouveau
Re,

Merci, mais j'ai un message d'erreur après avoir modifié cette ligne "erreur d'exécution '9' : l'indice n'appartient pas à la sélection
 

all_yver

XLDnaute Nouveau
Désolé, j'avais dû faire une fausse manip car maintenant ça fonctionne parfaitement :)
Comment puis-je modifier les options de rang.find pour la casse ?
 

sousou

XLDnaute Accro
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 XlSearchDirection 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.
 

all_yver

XLDnaute Nouveau
J'ai encore un souci... lorsque l'on encode le des données qui correspondent à ce qui se trouve dans les colonnes B, C, D, E on obtient les infos de toute la ligne
 

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.
 

Fichiers joints

sousou

XLDnaute Accro
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


Haut Bas