Remplissage d'un tableau par les données d'un autre classeur

11classeur1.xlsx (12.12 Ko)
14classeur2.xlsx (10.89 Ko)

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...

9mag35.xlsm (21.04 Ko)

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)

image image
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 Sub

le fichier1 et fichier2 n'ont pas d'extensions...

  Fichier = "classeur2.xlsx" 'nom du fichier.xls

et 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

Rechercher des sujets similaires à "remplissage tableau donnees classeur"