Remplissage d'un tableau par les données d'un autre classeur
Bonjour tout le monde,
Je suppose que la question a déjà été posée mais je n'ai rien trouvé qui corresponde à mon besoin.
Ma demande est, je pense assez simple, mais je suis novice en macro. Et je cale sur ce problème depuis 3 jours...
En cliquant sur le bouton de macro, je souhaiterai:
1- Inviter à ouvrir "classeur2" (message d'erreur si ce n'est pas le cas)
2- Exporter certaines données du classeur1vers le classeur2:
classeur 1 C7 -> Classeur 2 colonne B (dernière case vide en partant du bas)
classeur 1 C13->Classeur 2 colonne C (dernière case vide en partant du bas)
classeur 1 C8->Classeur 2 colonne D (dernière case vide en partant du bas)
classeur 1 C12->Classeur 2 colonne E (dernière case vide en partant du bas)
classeur 1 C23->Classeur 2 colonne F (dernière case vide en partant du bas)
3-importer une valeur de Classeur 2 vers classeur1:
classeur2 colonne A (dernière case vide en partant du bas) -> classeur 1 C15
4-Inviter à enregistrer le classeur 1 :
"enregistrer sous" -> la valeur de "classeur 1 C15" (pour ne pas écraser la version original)
Est-ce possible ou bien dois-je simplifier ma démarche?
Je remercie d'avance la personne qui acceptera de m'aider.
Et je vous souhaite de très belles fêtes de fin d'année.
Bonjour
Ci joint ma solution avec ouverture automatique de classeur 2 si necessaire
Un soucis dans ce classeur il y a 2 feuilles 2021 et 2022 donc il faudrait changer la macro si changement d'année...
Perso je ne mettrai qu'une seule feuille et dans la macro remplacer sheets(varan) par sheets(1)... ou utiliser la date de dépôt...
A+ François
Bonjour!
Merci beaucoup pour cette aide rapide et efficace!
J'ai bien conscience qu'il faudra aller modifier la macro par rapport au nom des onglets différents chaque année.
Mais actuellement notre numérotation interne dépend de l'année. Je sais que ce n'ai pas idéal mais je dois faire changer la numérotation interne avant ...
L'import et l'export de donnée marche parfaitement bien.
De même, l'enregistrement des 2 classeurs se fait sans encombre.
Il me reste un petit détail à régler. Actuellement, tous les classeurs 1 modifiés (enregistré sous C15) sont enregistré dans le même dossier que les originaux . Ils vont vite être "noyés".
Si je souhaite enregistrer l'ensemble des classeurs 1 dans un sous dossier, comment puis-je indiquer le chemin dans la macro?
Encore mille mercis pour cette aide inespérée.
Magaly
Bonjour
Avant l'avant dernière ligne de la macro (Workbooks(Fichier).SaveAs Filename:=Rep & sh.Range("C15").Value & ".xlsx")
mettre:
Rep="c:\dossier\example\"
A+ François
Bonjour,
Lorsque j'ai ajouté la ligne de code, je me suis rendue compte que c'était le classeur 2 qui était sauvegardé sous le nom de de la cellule c15, au lieu du classeur1.
J'ai essayé de modifier par moi-même mais j'ai un message de bug. Qu'est ce que j'ai mal fait? (J'ai adapté le nom des cellule à ma feuille de travail)
Option Explicit
Public wb As Workbook
Sub importer()
Dim Rep As String, Fichier1 As String, Fichier2 As String, I As Long, ordre As Boolean, dl As Long, varan As String, sh As Worksheet
varan = 2021: Set sh = ActiveSheet
Rep = ActiveWorkbook.Path & "\" 'répertoire
Fichier1 = "Classeur2" 'nom du fichier.xls
Fichier2 = "Classeur1"
For I = 1 To Application.Workbooks.Count
Set wb = Application.Workbooks(I)
If wb.Name = Fichier1 Then ordre = True
Next
If ordre = False Then Set wb = Workbooks.Open(Rep & Fichier1) 'si le fichier n'est pas ouvert on l'ouvre
With Workbooks(Fichier1).Sheets(varan)
dl = .Range("B" & Rows.Count).End(xlUp).Row + 1
.Range("B" & dl).Value = sh.Range("C10").Value
.Range("C" & dl).Value = sh.Range("C16").Value
.Range("D" & dl).Value = sh.Range("C11").Value
.Range("E" & dl).Value = sh.Range("C15").Value
.Range("F" & dl).Value = sh.Range("C26").Value
sh.Range("C18").Value = .Range("A" & dl).Value
End With
Workbooks(Fichier1).Save
Workbooks(Fichier1).Close
Workbooks(Fichier2).SaveAs Filename:=Rep & sh.Range("C18").Value & ".xlsx"
Workbooks(sh.Range("C18").Value & ".xlsx").Close
End Suble fichier1 et fichier2 n'ont pas d'extensions...
Fichier = "classeur2.xlsx" 'nom du fichier.xlset il me semble que le fichier 2 c'est un xlsm si tu le veux en xlsx tu dois d'abord mettre
application.DisplayAlertsà false avant la commande et à true après la commande
A+ François
Bonjour,
Ca marche impeccable!!
Milles Mercis de m'avoir accordé du temps et d'avoir eu la patience de m'expliquer.
Grâce à vous, j'ai compris une partie des possibilités du VBA.
Je vous souhaite de très bonne fêtes d fin d'année.
Magaly