OVH Cloud OVH Cloud

reprise d'informations avec mise en forme

2 réponses
Avatar
Laurent
Bonjour,

J'ai dans un classeur Excel une liste de données sur des clients.
Colonne A : nom du client
Colonne B : Adresse
...

Prenons par exemple les données se trouvant dans la ligne 2.
J'aimerai que lorsque je clique sur H2, il m'ouvre un fichier 'modele.xls'
et qu'il me remplisse ce fichier
en pompant les infos dans la base. SAchant que dans mon fichier modèle j'ai
nommé mes cellules. Par exemple, la cellule qui comportera le nom du client
est nommée 'client'.
Une fois celà fait, qu'il me sauvegarde le fichier modele sous le nom du
client.

J'ai réussi à faire en sorte que lorsque je clique sur H2 je lance ma macro,
et j'arrive à ouvrir le fichier modèle.
Mais ensuite je bloque.
Je suppose que la formule sera du style :

ActiveWorkbook.Sheets("infos").Range(clientname).Value =
Workbooks(base.xls).Sheets("feuil1").Range("A2").Value

Mais je n'arrive pas à trouver la formule exacte.

Quelqu'un peu m'aider?

Merci beaucoup

Laurent

2 réponses

Avatar
abcd
tu écrivais:

ActiveWorkbook.Sheets("infos").Range(clientname).Value =
Workbooks(base.xls).Sheets("feuil1").Range("A2").Value

je te conseille
1- d'éviter ActiveWorkbook dès lors que tu ne veux pas utiliser le
classeur actif mais celui d'où a été lancé la macro (ThisWorkbook me
semble plus approprié). C'est dangereux, car en ouvrant le modèle, le
nouveau classeur peut devenir le classeur actif.

2- De la même façon, appelle plutôt les feuilles selon leur nom V BA
(par exemple Feuil1.Range("A2") ainsi l'utilisateur peut lui changer son
nom sans perturber le fonctionnement de la macro: à moins que ce nom
soit un repère utile à l'utilisateur, c'est un mode d'emploi à choi sir).
Avatar
Daniel
Bonjour.
Adapte ce bout de code :

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Dim NomCli As String, AdrCli As String
If Intersect(Target, Range("H:H")) Is Nothing Then Exit Sub
NomCli = Target.Offset(0, -7).Value
AdrCli = Target.Offset(0, -6).Value
Workbooks.Open Filename:="c:TonRepertoiremodele.xls"
ActiveSheet.Range("nom").Value = NomCli
ActiveSheet.Range("adresse") = AdrCli
Workbooks("modele.xls").SaveAs Filename:="c:TonRepertoire" & NomCli
Workbooks("modele.xls").Close
End Sub

Cordialement.
Daniel

"Laurent" a écrit dans le message de news:

Bonjour,

J'ai dans un classeur Excel une liste de données sur des clients.
Colonne A : nom du client
Colonne B : Adresse
...

Prenons par exemple les données se trouvant dans la ligne 2.
J'aimerai que lorsque je clique sur H2, il m'ouvre un fichier 'modele.xls'
et qu'il me remplisse ce fichier
en pompant les infos dans la base. SAchant que dans mon fichier modèle
j'ai nommé mes cellules. Par exemple, la cellule qui comportera le nom du
client est nommée 'client'.
Une fois celà fait, qu'il me sauvegarde le fichier modele sous le nom du
client.

J'ai réussi à faire en sorte que lorsque je clique sur H2 je lance ma
macro, et j'arrive à ouvrir le fichier modèle.
Mais ensuite je bloque.
Je suppose que la formule sera du style :

ActiveWorkbook.Sheets("infos").Range(clientname).Value =
Workbooks(base.xls).Sheets("feuil1").Range("A2").Value

Mais je n'arrive pas à trouver la formule exacte.

Quelqu'un peu m'aider?

Merci beaucoup

Laurent