copier coller des données dans un classeur fermé

julie999

XLDnaute Occasionnel
Bonjour
J’aimerais de l’aide pour réalisé cette macro
Copier coller des données dans un classeur fermé

Ce que je voudrais faire :

Le classeur 1 est ouvert insérer une macro pour qu’il recherche la date dans la colonne A
Ouvrir le classeur 2
Recherche cette même date dans le classeur 2(dans onglet puis dans colonneA)
Copier les cellules de AN à BG de la ligne correspondante (du classeur 1) et coller les valeur dans le classeur 2 a partir de la colonne C pour la provenance de Sartrouville et arvato
Enregistrer le classeur2 et fermer le classeur 2

Voici pour le moment ce que j’ai (c’est plutôt la fin du code)
Sub Macro1()
'
' Macro Macro
'

'

Range("AN8:BG9").Copy
Range("C18").Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
Application.CutCopyMode = False
ActiveWorkbook.Save
ActiveWindow.Close
End Sub

info:les 2 classeur se trouve a la racine du disque c

merci Julie
 

Pièces jointes

  • Classeur1.xlsx
    17.4 KB · Affichages: 90
  • classeur 2.xlsx
    70.7 KB · Affichages: 78
  • Classeur1.xlsx
    17.4 KB · Affichages: 98
  • classeur 2.xlsx
    70.7 KB · Affichages: 98
  • Classeur1.xlsx
    17.4 KB · Affichages: 95
  • classeur 2.xlsx
    70.7 KB · Affichages: 88

bbb38

XLDnaute Accro
Re : copier coller des données dans un classeur fermé

Bonjour Julie, le forum,
pense tu que ce soit possible que l'userform ne s'affiche pas et qu'il sélectionne automatiquement par défaut le mois système en cours
la feuille reporting complet va se générer une fois par jour et tous les jours et le but est que le classeur 2 s'ouvre, récupère les données,s'enregistre et se ferme sans y intervenir manuellement
Je suppose que ces opérations sont réalisables (je regarde pour demain au plus tard). Je pense lancer la mise à jour des feuilles du classeur 2, lors de la fermeture du classeur 1. Cette méthode te convient-elle ?

y a t il une astuce pour désactiver ou ne pas afficher l'avertissement de sécurité;la mise a jour automatique des lens ...
Lorsque tu as le message « Avertissement de Sécurité », cliques successivement sur Options/Ouvrir le Centre de Gestion de la confidentialité/Ne jamais afficher…../Ok/Ok (ou Options Excel/ Centre de Gestion de la confidentialité/ Centre de Gestion de la confidentialité/etc…)
Cordialement,
Bernard
 
Dernière édition:

julie999

XLDnaute Occasionnel
Re : copier coller des données dans un classeur fermé

bonjour bbb38 ,le fil
pour la mise a jour du classeur 2, l’idéal serait qu'il se met a jour en activant le bouton sur le classeur 1,mais sans voir l'userform et mettre comme valeur par défaut le mois système en cours
pour l'avertissement de sécurité c'est OK résolu
un grand merci Bernard
Julie
 

bbb38

XLDnaute Accro
Re : copier coller des données dans un classeur fermé

Bonsoir Julie, le forum,
Un essai à tester.
Cordialement,
Bernard
 

Pièces jointes

  • Classeur2.xlsm
    68.2 KB · Affichages: 73
  • Classeur1.xlsm
    66.3 KB · Affichages: 67
  • Classeur2.xlsm
    68.2 KB · Affichages: 70
  • Classeur1.xlsm
    66.3 KB · Affichages: 67
  • Classeur2.xlsm
    68.2 KB · Affichages: 64
  • Classeur1.xlsm
    66.3 KB · Affichages: 58

julie999

XLDnaute Occasionnel
Re : copier coller des données dans un classeur fermé

salut bbb38,le fil
magnifique ca fonctionne nickel sur le classeur test
par contre qand je veux deplacer la feuille reporting du classeur1 vers mon classeur d'origine il y a un souci le bouton mise a jour du mois en cours ne fonctionne pas
peut etre faut il mettre les bon nom de classeur dand la macro
peux tu jetter un coup d'oeil
voici les bon nom
classeur1 =PHOTOBOX NEW
classeur 2=UK orders direct injection_tracker 2012
peux tu y jetter un coup d'oeil pour modifier les code peut etres
merci julie
 

julie999

XLDnaute Occasionnel
Re : copier coller des données dans un classeur fermé

re bernard,le fil
quand je deplace la feuille dans le bon classeur ca bloque a ce niveau

With Workbooks("UK orders direct injection_tracker 2012.xlsm").Worksheets(xnomois)


le code complet

Application.ScreenUpdating = False
Application.Calculation = xlCalculationManual
Dim xchemin As String
xchemin = ThisWorkbook.Path
Workbooks.Open Filename:=xchemin & "\UK orders direct injection_tracker 2012.xlsm"
'Modifier le type de variables si plus de 32767 données
Dim xnomois As Byte, xdlgns As Integer, xdlgnd As Integer, i As Integer, j As Integer
Dim xdatesource As String, xprovsource As String, rng As Range, xclasseur As Workbook
' Mois en cours et Dernière ligne de le feuille reporting
xnomois = Workbooks("PHOTOBOX NEW.xlsm").Worksheets("reporting").Range("B3")
xdlgns = Workbooks("PHOTOBOX NEW.xlsm").Worksheets("reporting").Range("C1007").End(xlUp).Row
' Efface les lignes du mois choisi
With Workbooks("UK orders direct injection_tracker 2012.xlsm").Worksheets(xnomois)
.Activate
.Range("D4:W65").ClearContents
End With
' Boucle sur chaque ligne de la feuille reporting pour reporter les données dans le mois concerné
For i = 8 To xdlgns
With Workbooks("PHOTOBOX NEW.xlsm").Worksheets("reporting")
.Activate
If .Cells(i, 2) = xnomois Then
xdatesource = Cells(i, 1)
xprovsource = Cells(i, 4)
Set rng = .Range("AP" & i & ":" & "BI" & i)
With Workbooks("UK orders direct injection_tracker 2012.xlsm").Worksheets(xnomois)
.Activate
xdlgnd = .Range("A1007").End(xlUp).Row
For j = 4 To xdlgnd
If .Cells(j, 1) = xdatesource And .Cells(j, 3) = xprovsource Then
rng.Copy Range("D" & j)
End If
Next j
End With
End If
End With
Next i
' fermeture des classeurs
' Workbooks.Close
Windows("UK orders direct injection_tracker 2012.xlsm").Activate
ActiveWorkbook.Save
ActiveWindow.Close
Application.Calculation = xlCalculationAutomatic
Application.ScreenUpdating = True
MsgBox "Traitement terminé."
End Sub
serais tu d'accord pour que je t'envoie le fichier complet pour que tu y jette un oeil
Julie
 

julie999

XLDnaute Occasionnel
Re : copier coller des données dans un classeur fermé

re Bernard
voici le fichier complet
Julie
 

Pièces jointes

  • UK orders direct injection_tracker 2012.xlsm
    141.7 KB · Affichages: 46
  • UK orders direct injection_tracker 2012.xlsm
    141.7 KB · Affichages: 48
  • UK orders direct injection_tracker 2012.xlsm
    141.7 KB · Affichages: 43
  • PHOTOBOX NEW.xlsm
    509.7 KB · Affichages: 43

bbb38

XLDnaute Accro
Re : copier coller des données dans un classeur fermé

Bonjour Julie, le forum,
Code modifié, à tester. J’ai supprimé le module 22. Effectivement, il faut modifier le nom des classeurs. Dans l’exemple (Classeur 1 et 2), les mois correspondaient à leurs numéros (Janvier 2012 = feuille no.1, etc…). Dans ton classeur d’origine, le mois d’avril correspond à la feuille 1, j’ai donc modifié le code.
Pour éviter, que cellules des colonnes A et B de la feuille reporting soient modifiées manuellement, il serait préférable de protéger la feuille sans mot de passe.
Cordialement,
Bernard
 

Pièces jointes

  • UK orders direct injection_tracker 2012.xlsm
    145.1 KB · Affichages: 49
  • PHOTOBOX NEW-1.xlsm
    506.5 KB · Affichages: 49
  • UK orders direct injection_tracker 2012.xlsm
    145.1 KB · Affichages: 49
  • PHOTOBOX NEW-1.xlsm
    506.5 KB · Affichages: 52
  • UK orders direct injection_tracker 2012.xlsm
    145.1 KB · Affichages: 46
  • PHOTOBOX NEW-1.xlsm
    506.5 KB · Affichages: 43

julie999

XLDnaute Occasionnel
Re : copier coller des données dans un classeur fermé

bonjour Bernard,le fil
impeccable ça fonctionne
j'en ai rêvé , Bernard l'a fait(je devrai me mettre dans la pub non LOL)
merci Julie

ps par contre j'ai un problème que je n'avais pas prévu le fait d’insérer 2 colonne dans la feuille reporting du classeur photobox
la macro 19 du classeur photobox qui génère le remplissage de la feuille reporting avec les info de la feuille réception ne fonctionne plus
le plus embetant c'est qu'elle ne vient pas de moi la premiere partie en faite
connait tu les codes employés
c'est certainement des nom de colonne a modifier mais j'ai peur de faire pire que mieux (et oui je suis blonde)
je met la macro au cas ou (sinon c'est la macro19 du classeur photobox)
quel dommage on avance d'un coté pour reculer de l'autre sniff
Julie
Sub Macro19()
Application.ScreenUpdating = False
Worksheets("reporting").Visible = True
Sheets("reporting").Select
ActiveSheet.Unprotect "david"
Dim LigneEnCours As Long
Dim Données As Variant
'Détection 1° ligne utilisable
With Worksheets("reporting")

'Choix de la ligne de destination
LigneEnCours = .Range("B" & Rows.Count).End(xlUp).Row
If .Range("A" & LigneEnCours) = Worksheets("RECEPTION").Range("W2") Then
LigneEnCours = LigneEnCours - 2
Else
LigneEnCours = LigneEnCours + 1
End If
If LigneEnCours > 10 Then .Range("A8:BJ10").Copy .Range("A" & LigneEnCours & ":BJ" & LigneEnCours)

'Copie de la date
.Range("A" & LigneEnCours).Resize(3, 1) = Worksheets("RECEPTION").Range("W2")
'lieux de réception
.Range("B" & LigneEnCours) = "Sartrouville"
.Range("B" & LigneEnCours + 1) = "Londres"
.Range("B" & LigneEnCours + 2) = "Arvato"
'Cellules de regroupement
.Range("F" & LigneEnCours) = Worksheets("RECEPTION").Range("C74").Value
.Range("J" & LigneEnCours) = Worksheets("RECEPTION").Range("I74").Value
.Range("AI" & LigneEnCours) = Worksheets("RECEPTION").Range("X46").Value

'Sartrouville
Données = Worksheets("RECEPTION").Range("B8").Resize(1, 3).Value
.Range("C" & LigneEnCours).Resize(1, UBound(Données, 2)) = Données
Données = Worksheets("RECEPTION").Range("E8").Resize(1, 3).Value
.Range("G" & LigneEnCours).Resize(1, UBound(Données, 2)) = Données
Données = Worksheets("RECEPTION").Range("H8").Resize(1, 24).Value
.Range("K" & LigneEnCours).Resize(1, UBound(Données, 2)) = Données
Données = Worksheets("RECEPTION").Range("AB13").Resize(1, 4).Value
.Range("AJ" & LigneEnCours).Resize(1, UBound(Données, 2)) = Données
Données = Worksheets("RECEPTION").Range("B13").Resize(1, 20).Value
.Range("AN" & LigneEnCours).Resize(1, UBound(Données, 2)) = Données

'Londres
Données = Worksheets("RECEPTION").Range("B19").Resize(1, 3).Value
.Range("C" & LigneEnCours + 1).Resize(1, UBound(Données, 2)) = Données
Données = Worksheets("RECEPTION").Range("E19").Resize(1, 3).Value
.Range("G" & LigneEnCours + 1).Resize(1, UBound(Données, 2)) = Données
Données = Worksheets("RECEPTION").Range("H19").Resize(1, 24).Value
.Range("K" & LigneEnCours + 1).Resize(1, UBound(Données, 2)) = Données
Données = Worksheets("RECEPTION").Range("AB24").Resize(1, 4).Value
.Range("AJ" & LigneEnCours + 1).Resize(1, UBound(Données, 2)) = Données
Données = Worksheets("RECEPTION").Range("B24").Resize(1, 20).Value
.Range("AN" & LigneEnCours + 1).Resize(1, UBound(Données, 2)) = Données

'Arvato
Données = Worksheets("RECEPTION").Range("B30").Resize(1, 3).Value
.Range("C" & LigneEnCours + 2).Resize(1, UBound(Données, 2)) = Données
Données = Worksheets("RECEPTION").Range("E30").Resize(1, 3).Value
.Range("G" & LigneEnCours + 2).Resize(1, UBound(Données, 2)) = Données
Données = Worksheets("RECEPTION").Range("H30").Resize(1, 24).Value
.Range("K" & LigneEnCours + 2).Resize(1, UBound(Données, 2)) = Données
Données = Worksheets("RECEPTION").Range("AB35").Resize(1, 4).Value
.Range("AJ" & LigneEnCours + 2).Resize(1, UBound(Données, 2)) = Données
Données = Worksheets("RECEPTION").Range("B35").Resize(1, 20).Value
.Range("AN" & LigneEnCours + 2).Resize(1, UBound(Données, 2)) = Données

End With

Sheets("reporting").Select
ActiveSheet.Protect "david"
Call Macro24
Call Macro23
Sheets("MENU").Select
Application.ScreenUpdating = True
MsgBox "Sauvegarde des fichiers effectués" & vbCrLf & "Merci"
ActiveWorkbook.Save
End Sub
 

bbb38

XLDnaute Accro
Re : copier coller des données dans un classeur fermé

Bonjour Julie, le forum,
j'en ai rêvé , Bernard l'a fait(je devrai me mettre dans la pub non LOL)
On peut toujours rêver…. De gagner au loto, par exemple….

ps par contre j'ai un problème que je n'avais pas prévu le fait d’insérer 2 colonne dans la feuille reporting du classeur photobox. la macro 19 du classeur photobox qui génère le remplissage de la feuille reporting avec les info de la feuille réception ne fonctionne plus
Sans modifier la macro 19, on doit pouvoir régler le problème en déplaçant les deux colonnes. J’essaie de rectifier mon code pour ….. Lundi …. (Cause week-end chargé… mais sans blondes ni brunes – LOL – pour ma part, pas difficile, je bois très peu de bière… en France).
Cordialement,
Bernard
 

bbb38

XLDnaute Accro
Re : copier coller des données dans un classeur fermé

Bonjour Julie, le forum,
Pour tester mon code, peux-tu m’adresser le classeur PHOTOBOX NEW.xlsm, avec la feuille "reporting", sans mes modifications (c’est-à-dire avant l’insertion des 2 colonnes).
Le nombre de feuilles dans le classeur "UK orders direct injection_tracker 2012.xlsm" est composé de 9 feuilles. Ce nombre est-il susceptible de changer ?
Cordialement,
Bernard
 

julie999

XLDnaute Occasionnel
Re : copier coller des données dans un classeur fermé

Bonjour Julie, le forum,
Pour tester mon code, peux-tu m’adresser le classeur PHOTOBOX NEW.xlsm, avec la feuille "reporting", sans mes modifications (c’est-à-dire avant l’insertion des 2 colonnes).
Le nombre de feuilles dans le classeur "UK orders direct injection_tracker 2012.xlsm" est composé de 9 feuilles. Ce nombre est-il susceptible de changer ?
Cordialement,
Bernard

bonjour Bernard,le fil
désolé je n'est plus le classeur PHOTOBOX NEW.xlsm sans les modificationx comme le code fonctionner je l'avais intégré directement sur mon fichier,mais bon il suffis juste de supprimer les 2 colonnes( A et B) non??
le nombre de feuille dans le classeur "UK orders direct injection_tracker 2012.xlsm"sera de 12 au total 1 feuille par mois
cordialement Julie
 

bbb38

XLDnaute Accro
Re : copier coller des données dans un classeur fermé

Bonjour Julie, le forum,
Code à tester. J’ai modifié uniquement ma macro (module 21), les autres macros doivent s’exécuter normalement (en théorie…).
Pour éviter de perdre le bouton de commande « Mise à jour du mois en cours », je l’ai déplacé sur « MENU reporting ».
Ne pas modifier l’ordre des feuilles du classeur « UK orders direct injection_tracker 2012 », car le numéro des feuilles correspond au chiffre des mois.
Cordialement,
Bernard
 

Pièces jointes

  • PHOTOBOX NEW-1.xlsm
    489.3 KB · Affichages: 39
  • Uk orders direct injection_tracker 2012.xlsm
    150.7 KB · Affichages: 36
  • PHOTOBOX NEW-1.xlsm
    489.3 KB · Affichages: 39
  • Uk orders direct injection_tracker 2012.xlsm
    150.7 KB · Affichages: 38
  • PHOTOBOX NEW-1.xlsm
    489.3 KB · Affichages: 39
  • Uk orders direct injection_tracker 2012.xlsm
    150.7 KB · Affichages: 41

julie999

XLDnaute Occasionnel
Re : copier coller des données dans un classeur fermé

[/U][/U][/B]bonjour bernard,le fil
le code bloque sur la ligne soulignée en gras
erreur d’exécution 9
l'indice n'appartient pas a la selection

Option Explicit

Sub Miseajour()
Application.ScreenUpdating = False
Application.Calculation = xlCalculationManual
' Si changement d'année modifier le nom du fichier
' Ouverture du fichier Uk orders direct injection_tracker 2012
Dim xchemin As String
xchemin = ThisWorkbook.Path
Workbooks.Open Filename:=xchemin & "\Uk orders direct injection_tracker 2012.xlsm"
' Déclaration des variables
' Modifier le type de variables si plus de 32767 données
Dim xnomois As Byte, xmois As Byte, xdlgns As Integer, i As Integer, j As Integer, xserie As Double
Dim xdatesource As String, xprovsource As String, rng As Range, xdate As String
' Mois en cours
xdate = Date: xnomois = CDbl(Mid(xdate, 4, 2))
' Dernière ligne de la feuille reporting
' Nombre maximum de lignes - Je suppose 3 destinations et 366 jours soit 1098 lignes + 7 lignes en-tête, arrondi à 1200 lignes
With Workbooks("PHOTOBOX NEW-1.xlsm").Worksheets("reporting")
.Activate
xdlgns = .Range("A1200").End(xlUp).Row
For i = 8 To xdlgns
Cells(i, 105) = .Range("A" & i)
xserie = .Cells(i, 105)
Cells(i, 106) = Month(xserie)
Next i
End With
' Efface les lignes du mois choisi
With Workbooks("Uk orders direct injection_tracker 2012.xlsm").Worksheets(xnomois)
.Activate
.Range("D4:W65").ClearContents
End With
' Boucle sur chaque ligne de la feuille reporting pour reporter les données dans le mois concerné
For i = 8 To xdlgns
With Workbooks("PHOTOBOX NEW-1.xlsm").Worksheets("reporting")
.Activate
xmois = .Range("DB" & i).Value
If xmois = xnomois Then
xdatesource = Cells(i, 105)
xprovsource = Cells(i, 2)
Set rng = .Range("AN" & i & ":" & "BG" & i)
With Workbooks("Uk orders direct injection_tracker 2012.xlsm").Worksheets(xnomois)
.Activate
For j = 4 To 65
If .Cells(j, 1) = xdatesource And .Cells(j, 3) = xprovsource Then
rng.Copy Range("D" & j)
End If
Next j
End With
End If
End With
Next i
' sauvegarde du classeur
Workbooks("Uk orders direct injection_tracker 2012.xlsm").Save
Workbooks("Uk orders direct injection_tracker 2012.xlsm").Close
Application.Calculation = xlCalculationAutomatic
Application.ScreenUpdating = True
End Sub
 

Discussions similaires

Statistiques des forums

Discussions
314 562
Messages
2 110 729
Membres
110 909
dernier inscrit
François19