Création de classeurs

  • Initiateur de la discussion Initiateur de la discussion biba78
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

biba78

XLDnaute Junior
Bonjour à tous 😀,
besoin de votre aide

je voulais savoir comment faire des liaisons entre deux classeurs excel qui permet de créer à partir d’un fichier Source et Destination autant de classeurs Destination qu’il y a de lignes Nom ?

en vous remerciant par avance
 

Pièces jointes

Re : Création de classeurs

Bonjour Biba, bonjour le forum,

C'est bien des classeurs que tu veux, pas des onglets dans le classeur destination ?
Et ensuite, comment nommer les classeurs (ou onglets) ?
Si c'est par le matricule, que faire quand une ligne n'a pas de matricule (comme dans ton exemple) ?
Tu vois c'est pas assez précis pour qu'on puisse t'aider correctement.
En attendant tes réponses...
 
Re : Création de classeurs

Bonjour Robert, bonjour le forum
oui il s'agit bien des classeurs , les classeurs on peut les nommer comme on veut nom ou matricule, c'est vrai dans mon exemple j'ai pas de marticule pour l'enregistrement 3 par contre dans mon fichier d'origine ya toujours des données matricule et nom
en vous remerciant
biba
 
Re : Création de classeurs

Bonsoir Biba, bonsoir le forum,

Je te propose le code ci-dessous :
Code:
Sub Macro1()
Dim cs As Workbook 'déclare la variable cs (Classeur Source)
Dim cd As Workbook 'déclare la variable cd (Classeur Destination)
Dim ch As String 'déclare la variable chs (CHemin d'accès)
Dim pl As Range 'déclare la variable pl (PLage)
Dim cel As Range 'déclare la variable cel (CELlule)

Set cs = ThisWorkbook 'définit le classeur source cs
ch = ThisWorkbook.Path & "\" 'définit le chemin d'accès ch
With cs.Sheets("Feuil1") 'prend en compte l'onglet "Feui1") du classeur source
    Set pl = .Range("A2:A" & .Cells(Application.Rows.Count, 1).End(xlUp).Row) 'définit la plage pl
End With 'fin de la prise en compte de l'onglet "Feuil1" du classeur source
For Each cel In pl 'boucle sur toutes les cellules cel de la plage pl
    Set cd = Workbooks("Destination.xls") 'définit le classeur destination
    With cd.Sheets("Feuil1") 'prend en compte l'onglet "Feuil1" du classeur destination
        .Range("B3") = cel.Value 'récupère le matricule
        .Range("B1") = cel.Offset(0, 1).Value 'récupère le nom
        .Range("B2").Value = cel.Offset(0, 2).Value 'récupère le préneom
        .Range("B6").Value = cel.Offset(0, 3).Value 'récupère le montant
    End With 'fin de la prise en comte de l'onglet 'Feuil1" du classeur destination
    cd.SaveAs (ch & cd.Sheets("Feuil1").Range("B3").Value & ".xls") 'enregistre le classeur sous (utlise le matricule qui normalement est unique)
    Workbooks(cd.Sheets("Feuil1").Range("B3").Value & ".xls").Close 'ferme le classeur
    Workbooks.Open (ch & "Destination.xls") 'ouvre le classeur destination
Next cel 'prochaine cellule de la boucle
End Sub
Les fichiers sont créés et portent le nom du matricule (pour éviter les doublons), dans le même dossier que celui où se trouve le fichier Source.xls. Pour que la macro fonctionne il faut au départ que les deux fichiers, Source.xls et Destination.xls soient ouverts.
Le fichier avec la macro :
 

Pièces jointes

- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

Réponses
5
Affichages
399
Retour