XL 2010 Recopier des données (bloc) de plusieurs feuilles dans une seul !!!

teckmicro03

XLDnaute Nouveau
bonjour , je veux recopier les donnes de chaque feuille journaliere1 , 2,3 ect (voir fichier) = total 336 pour une année Entiere !

de la cellule A2 a L2 et de A23 a L23 ( pour chaque feuille ) (bloc)

dans le onglet (Gestion des donnees integrale ) les couleur pour donnes les emplacements des donnees en fonction de cheque feuille journaliere !!

Bloc de de donnees a recopier la suite automatiquement ( par bouton ou autre ) ?

Merci beaucoup pour votre aide , j'essaye plein de chose , en mode manuelle , mais 336 fois pour cette manip !!!!

Cordialement

Je reste a votre écoute .
 
Dernière édition:

Staple1600

XLDnaute Barbatruc
Re

@teckmicro03
Pour tester,
1)Efface tout contenu de la feuille Gestion des donnees integrale
(ce n'est pas grave puisqu'il s'agit d'un fichier de test)
(efface également les formats et les couleurs)
2) Remplis quelques lignes sur les feuilles FORMULAIRE présentes
(donc dans ton exemple de Formulaire 1 à Formulaire 6
3) Lances la macro ci-dessous
VB:
Sub test_ok() 'OK sur mon PC et avec le fichier Exemple fourni
Dim f As Worksheet, vArr
For Each f In Worksheets
If f.Name Like "Formulaire JOURNEE*" Then
vArr = f.Range("A2:L23").Value2
Feuil15.Cells(Rows.Count, 1).End(3)(2).Resize(UBound(vArr, 1), UBound(vArr, 2)).Value = vArr
Erase vArr
End If
Next
End Sub
NB: Pour conserver la macro, il faut enregistrer le fichier avec le format : xlsm
Classeur Excel (prenant en charge les macros) *.xlsm
 

teckmicro03

XLDnaute Nouveau
Re

@teckmicro03
Pour tester,
1)Efface tout contenu de la feuille Gestion des donnees integrale
(ce n'est pas grave puisqu'il s'agit d'un fichier de test)
(efface également les formats et les couleurs)
2) Remplis quelques lignes sur les feuilles FORMULAIRE présentes
(donc dans ton exemple de Formulaire 1 à Formulaire 6
3) Lances la macro ci-dessous
VB:
Sub test_ok() 'OK sur mon PC et avec le fichier Exemple fourni
Dim f As Worksheet, vArr
For Each f In Worksheets
If f.Name Like "Formulaire JOURNEE*" Then
vArr = f.Range("A2:L23").Value2
Feuil15.Cells(Rows.Count, 1).End(3)(2).Resize(UBound(vArr, 1), UBound(vArr, 2)).Value = vArr
Erase vArr
End If
Next
End Sub
NB: Pour conserver la macro, il faut enregistrer le fichier avec le format : xlsm
Classeur Excel (prenant en charge les macros) *.xlsm
bonsoir , je viens de tester votre code , super mais lorque je relance macro , il refait des doublons de la journee 1 journe 2 journe 3 , donc plusieur donnees en doublon !
Merci , Merci .
Cdt
 

Pièces jointes

  • FORUM30102022.xlsx
    148.6 KB · Affichages: 4

Staple1600

XLDnaute Barbatruc
Re

@teckmicro03
Comme son nom l'indique, nous ne sommes qu'à cette étape ;)
Sub test_ok()

Une fois la copie effectuée, peut-on supprimer la saisie sur les N feuilles Formulaires JOURNEE ?

NB: D'ailleurs pourquoi N feuilles ?
On pourrait faire la saisie journalière sur une seule feuille
Et quand la journée est finie, on archive les données saisies sur la feuille Gestion
 

Staple1600

XLDnaute Barbatruc
Re

@teckmicro03
Donc dans le cas où l'effacement est possible.
VB:
Sub test_B()
Dim f As Worksheet, vArr
For Each f In Worksheets
If f.Name Like "Formulaire JOURNEE*" Then
vArr = f.Range("A2:L23").Value2
Feuil15.Cells(Rows.Count, 1).End(3)(2).Resize(UBound(vArr, 1), UBound(vArr, 2)).Value = vArr
Erase vArr
On Error Resume Next
f.Range("A2:L23").SpecialCells(xlCellTypeConstants, 3).ClearContents
End If
Next
End Sub
NB: test OK sur mon PC
 

teckmicro03

XLDnaute Nouveau
Re

@teckmicro03
Comme son nom l'indique, nous ne sommes qu'à cette étape ;)
Sub test_ok()

Une fois la copie effectuée, peut-on supprimer la saisie sur les N feuilles Formulaires JOURNEE ?

NB: D'ailleurs pourquoi N feuilles ?
On pourrait faire la saisie journalière sur une seule feuille
Et quand la journée est finie, on archive les données saisies sur la feuille Gestion
Bonjour , alors oui vous avez raison , pourquoi crée autant de feuille journalier car il en faut
336 exactement , j'ai trouver sur le net une macro pour cree par lot , heureusement ! , donc revenon en arriere et comme vous dite nous somme en mode test , et vous avez bien raison , et excel c'est tellement une usine a gaz , tellement de choses a exploiter surtout si on sait utiliser le code VBA ! , donc si vous voulez bien continue a m'aider , je suis preneur d'une solution plus simple . donc vous avez bien compris mon fonctionnment de mon fichier : lorsque journee finie , impression papier A4 et stock toute les informations bloc cellule , dans la gestion integrale . Bonne journee en ce Lundi 31 octobre 2022 . Cordialement
 

Staple1600

XLDnaute Barbatruc
Re

Une suggestion pour faire suite à la macro du message#10
Test OK sur le classeur exemple
(version d'Excel utilisé : Excel 365)
NB: Supprimer l'espace surnuméraire (à la fin) dans le nom de la feuille Formulaire de Saisie
Dans cette version, on fait un export en PDF de la saisie journalière
Enrichi (BBcode):
Sub test_C()
Dim Chemin As String
Dim t, rng As Range: Set rng = Sheets("Formulaire de Saisie").Range("A2:L23")
Chemin = "C:\Users\STAPLE\Documents\" ' Modifier selon votre configuration
t = rng.Value2
Feuil15.Cells(Rows.Count, 1).End(3)(2).Resize(UBound(t, 1), UBound(t, 2)).Value = vArr
Application.ScreenUpdating = False
Application.DisplayAlerts = False
' facultatif export de la saisie journalière en PDF
Sheets("Formulaire de Saisie").Copy After:=Sheets(Sheets.Count)
Range("A1:L30") = Range("A1:L30").Value
Sheets("Formulaire de Saisie (2)").Copy
mise_en_page ActiveSheet
ActiveSheet.ExportAsFixedFormat _
            Type:=xlTypePDF, Filename:=Chemin & "test_" & Format(Date, "ddmmyyyy") & ".pdf", _
            Quality:=xlQualityStandard, IncludeDocProperties:=True, IgnorePrintAreas:=False, OpenAfterPublish:=False
ActiveWorkbook.Close False
Sheets("Formulaire de Saisie (2)").Delete
On Error Resume Next
rng.SpecialCells(2, 3).ClearContents
End Sub
Sub mise_en_page(F As Worksheet)
F.PageSetup.PrintArea = "$A$1:$L$30"
    With F.PageSetup
        .LeftHeader = "JOURNALIER"
        .CenterHeader = "Page &P"
        .LeftMargin = Application.InchesToPoints(0.236220472440945)
        .RightMargin = Application.InchesToPoints(0.236220472440945)
        .TopMargin = Application.InchesToPoints(0.748031496062992)
        .BottomMargin = Application.InchesToPoints(0.748031496062992)
        .HeaderMargin = Application.InchesToPoints(0.31496062992126)
        .FooterMargin = Application.InchesToPoints(0.31496062992126)
        .PrintQuality = 600
        .Orientation = xlLandscape
        .PaperSize = xlPaperA3
        .FirstPageNumber = xlAutomatic
        .Order = xlDownThenOver
        .FitToPagesWide = 1
        .FitToPagesTall = 1
    End With
End Sub
 

teckmicro03

XLDnaute Nouveau
Re

Une suggestion pour faire suite à la macro du message#10
Test OK sur le classeur exemple
(version d'Excel utilisé : Excel 365)
NB: Supprimer l'espace surnuméraire (à la fin) dans le nom de la feuille Formulaire de Saisie
Dans cette version, on fait un export en PDF de la saisie journalière
Enrichi (BBcode):
Sub test_C()
Dim Chemin As String
Dim t, rng As Range: Set rng = Sheets("Formulaire de Saisie").Range("A2:L23")
Chemin = "C:\Users\STAPLE\Documents\" ' Modifier selon votre configuration
t = rng.Value2
Feuil15.Cells(Rows.Count, 1).End(3)(2).Resize(UBound(t, 1), UBound(t, 2)).Value = vArr
Application.ScreenUpdating = False
Application.DisplayAlerts = False
' facultatif export de la saisie journalière en PDF
Sheets("Formulaire de Saisie").Copy After:=Sheets(Sheets.Count)
Range("A1:L30") = Range("A1:L30").Value
Sheets("Formulaire de Saisie (2)").Copy
mise_en_page ActiveSheet
ActiveSheet.ExportAsFixedFormat _
            Type:=xlTypePDF, Filename:=Chemin & "test_" & Format(Date, "ddmmyyyy") & ".pdf", _
            Quality:=xlQualityStandard, IncludeDocProperties:=True, IgnorePrintAreas:=False, OpenAfterPublish:=False
ActiveWorkbook.Close False
Sheets("Formulaire de Saisie (2)").Delete
On Error Resume Next
rng.SpecialCells(2, 3).ClearContents
End Sub
Sub mise_en_page(F As Worksheet)
F.PageSetup.PrintArea = "$A$1:$L$30"
    With F.PageSetup
        .LeftHeader = "JOURNALIER"
        .CenterHeader = "Page &P"
        .LeftMargin = Application.InchesToPoints(0.236220472440945)
        .RightMargin = Application.InchesToPoints(0.236220472440945)
        .TopMargin = Application.InchesToPoints(0.748031496062992)
        .BottomMargin = Application.InchesToPoints(0.748031496062992)
        .HeaderMargin = Application.InchesToPoints(0.31496062992126)
        .FooterMargin = Application.InchesToPoints(0.31496062992126)
        .PrintQuality = 600
        .Orientation = xlLandscape
        .PaperSize = xlPaperA3
        .FirstPageNumber = xlAutomatic
        .Order = xlDownThenOver
        .FitToPagesWide = 1
        .FitToPagesTall = 1
    End With
End Sub
de retour , juste un coup de pouce , j 'ai enlever certaines de feuille de trop ,vu que la macro vide la fichier de saisie et l'integre la feuille de gestion integrale , pour l'autre macro pour exporter en PDF , j'ai un message erreure et je me demande si mais le code au bon endroit dans VBA ! Merci bien cdt
 

Pièces jointes

  • FORUM30102022.xlsx
    113.1 KB · Affichages: 3
Dernière édition:

Discussions similaires

Statistiques des forums

Discussions
314 488
Messages
2 110 131
Membres
110 679
dernier inscrit
lpierr