Macro copier coller avec ligne vide

sergiuspollux

XLDnaute Junior
Bonjour,

Après pas mal de temps a chercher, je manque de logique dans les syntaxes,je demande de l'aide

Dans le but d'historiser, j'ai besoin de copier le contenu d'une feuille
c'est a dire les trois onglets de la feuille capacity dans la feuille historisation_testrecette dans les 3onglets


avec tous mes remerciements

Serge
 

Pièces jointes

  • capacity.xls
    38.5 KB · Affichages: 56
  • historisation_testrecette.xls
    37.5 KB · Affichages: 33

camarchepas

XLDnaute Barbatruc
Re : Macro copier coller avec ligne vide

Bonjour Serge ,

Pourtant plein d'exemples sur le Forum,

Bon , la premiere chose , si Historisation est ton classeur de synthese pourquoi ne pas mettre la macro dans celui-ci .

Attention aux termes employés:

un classeur est un fichier Excel en principe Xls, mais depuis 2007 xlsx ou xlsm

une Feuille de calcul ou onglet est un de ces composants .

De ce que j'ai vu tu souhaites faire passer du classeur Capacity ces 3 onglets vers le classeur Historisation .

et c'est tout , ou ensuite tu viendras compléter ces onglets avec de nouvelles valeurs ?
 

sergiuspollux

XLDnaute Junior
Re : Macro copier coller avec ligne vide

Bonjour,

le fichier capacity est remis tous les jours a zero et réalimenté avec la date du jour.
je comptais mettre la macro dans le classeur capacity, car le fichier capacity centralise plusieur actions.

j'ai tellement essayé de combines que je m'y perds

===========================================

Sheets("aix_1m").Range("a2:j100").Copy (comment selectionner a partir de la ligne 2 jusqu' a la fin) ?
'
Workbooks(historisation_testrecette).Activate
Sheets("histo_aix_1m").Activate
Range("A65536").End(xlUp).Offset(1, 0).Select
ActiveSheet.Paste
'
================================

avec mes remerciements
Serge
 

camarchepas

XLDnaute Barbatruc
Re : Macro copier coller avec ligne vide

Bonjour Serge ,

Alors voici un code à placer dans le classeur capacity
le classeur synthese est nommé Historique.xls, a modifier dans le code si nécessaire .
ils doivent être stockés dans le même répertoire.

Si l'onglet n'est pas trouvé , il est intégralement copié , sinon l'on copie les lignes à la suite de ceux existantes

Code:
Sub Historique()
Dim Onglet As Worksheet
Dim LigneFin As Long, LigneCible As Long
Dim Bidon As Boolean
Dim Historique As String, Chemin As String

Chemin = ThisWorkbook.Path
Historique = "Historique.xls"

If Dir(Chemin & "\" & Historique) = "" Then MsgBox " Le fichier Historique n'existe pas ou n'est pas à l'emplacement attendu": Exit Sub
Workbooks.Open Chemin & "\" & Historique

With Workbooks(Historique)
'Copie des onglets
 'boucle sur l'ensemble des onglets de ce classeur
  For Each Onglet In ThisWorkbook.Worksheets

  'Test archaïque de l'existance de l'onglet visé
   On Error Resume Next
    Bidon = .Sheets(Onglet.Name).Visible
    'Historique = Err.Number
    If Err.Number = 9 Then
     'Sheets("vm_1m").Copy After:=Workbooks("historisation.xls").Sheets(2)
     Onglet.Copy After:=Workbooks(Historique).Sheets(Workbooks(Historique).Worksheets.Count)
      Else
    'Calcul de la derniere ligne occupée de la colonne A
     LigneFin = Onglet.Range("A" & Rows.Count).End(xlUp).Row
     LigneCible = Sheets(Onglet.Name).Range("A" & Rows.Count).End(xlUp).Row + 1
     .Sheets(Onglet.Name).Range("A" & LigneCible & ":H" & LigneCible + LigneFin - 2) = Onglet.Range("A2:H" & LigneFin).Value
    End If
    On Error GoTo 0
Next Onglet
End With
End Sub
 

sergiuspollux

XLDnaute Junior
Re : Macro copier coller avec ligne vide

Bonjour,

j'ai testé votre code qui fonctionne, il arrive qu'il y est des décallages dans les colonnes, il se trouve qu'il prend des onglets que je n'ai pas besoin(ce qui peut-etre pertube la remontée de certains élements) , y a t-il moyen de lui imposer les onglets que l'on veut historiser.

je vous remercie, car c'est vraiment top.

Cordialement

Serge.
 

camarchepas

XLDnaute Barbatruc
Re : Macro copier coller avec ligne vide

re Serge,

Ben oui , c'est possible ex : les feuilles "Feuil3,Feuil5", sont à exclure du traitement

Code:
Dim Onglet As Worksheet
 Dim LigneFin As Long, LigneCible As Long
 Dim Bidon As Boolean
 Dim Historique As String, Chemin As String
'boucle sur l'ensemble des onglets de ce classeur
  For Each Onglet In ThisWorkbook.Worksheets
   If InStr(1, "Feuil3,Feuil5", Onglet.Name) = 0 Then
    
 ' traitement 

   End If
 Next Onglet
End Sub
 

Discussions similaires

Réponses
56
Affichages
1 K
Réponses
7
Affichages
465

Statistiques des forums

Discussions
312 505
Messages
2 089 067
Membres
104 016
dernier inscrit
Mokson