Eric 888
XLDnaute Nouveau
Bonjour
disclaimer: je ne maîtrise pas VBA, je bricole comme je peux (c'est mal)
mon problème:
j'ai pondu une macro, qui marche, pour copier-coller le contenu de plusieurs feuilles dans une seule
la seule façon que j'ai trouvée consiste à activer la feuille source, sélectionner les cellules, copier la sélection, activer la feuille de destination, sélectionner la cellule de destination, coller, et rebelote pour chaque feuille source => code 1 ci-dessous
a priori il est possible de faire exactement la même chose sans passer par activation-sélection, par copier-coller direct entre feuille source et feuille destination
j'ai tenté en m'appuyant sur l'instruction censée faire ça, mais ça plante à l'endroit où j'ai remplacé ma procédure par cette instruction => code 2 ci-dessous
et là je craque...
merci d'avance
Eric
CODE 1 :
CODE 2:
disclaimer: je ne maîtrise pas VBA, je bricole comme je peux (c'est mal)
mon problème:
j'ai pondu une macro, qui marche, pour copier-coller le contenu de plusieurs feuilles dans une seule
la seule façon que j'ai trouvée consiste à activer la feuille source, sélectionner les cellules, copier la sélection, activer la feuille de destination, sélectionner la cellule de destination, coller, et rebelote pour chaque feuille source => code 1 ci-dessous
a priori il est possible de faire exactement la même chose sans passer par activation-sélection, par copier-coller direct entre feuille source et feuille destination
j'ai tenté en m'appuyant sur l'instruction censée faire ça, mais ça plante à l'endroit où j'ai remplacé ma procédure par cette instruction => code 2 ci-dessous
et là je craque...
merci d'avance
Eric
CODE 1 :
VB:
Sub tousGPX()
Dim feuille As Long
Dim NBL As Long
Dim correct As Long
Dim total As Long
Dim fin As Long
Dim nbfeuilles As Long
Worksheets("tous").Activate
Range("a:d").ClearContents
nbfeuilles = Sheets.Count - 1
NBL = 0
depart = 9
fin = 3
total = 8
Worksheets("récup calculateur").Activate
ActiveSheet.Range("q7:q14").Select
Selection.Copy
Worksheets("tous").Activate
ActiveSheet.Cells(1, 1).Select
ActiveSheet.Paste
For feuille = 9 To nbfeuilles
Worksheets(feuille).Activate
NBL = Application.CountIf(Columns(1), "*")
correct = NBL - fin
NBL = correct
ActiveSheet.Range(Cells(depart, 1), Cells(NBL, 1)).Select
Selection.Copy
Worksheets("tous").Activate
ActiveSheet.Cells(total, 1).Select
ActiveSheet.Paste
total = total + NBL - depart + 1
Next feuille
feuille = Sheets.Count
Worksheets(feuille).Activate
NBL = Application.CountIf(Columns(1), "*")
ActiveSheet.Range(Cells(9, 1), Cells(NBL, 1)).Select
Selection.Copy
Worksheets("tous").Activate
ActiveSheet.Cells(total, 1).Select
ActiveSheet.Paste
Worksheets("tous").Activate
Chemin = ThisWorkbook.Path
NomFichier = Sheets("récup calculateur").Range("m4").Value
ActiveSheet.Copy
ActiveWorkbook.SaveAs Chemin & "\" & NomFichier & ".gpx", _
FileFormat:=xlTextPrinter, CreateBackup:=False
ActiveWorkbook.Close
Worksheets("recup GPX").Activate
End Sub
CODE 2:
VB:
Sub tousGPX()
Dim feuille As Long
Dim NBL As Long
Dim correct As Long
Dim total As Long
Dim fin As Long
Dim nbfeuilles As Long
Worksheets("tous").Range("a:d").ClearContents
nbfeuilles = Sheets.Count - 1
NBL = 0
depart = 9
fin = 3
total = 8
Worksheets("récup calculateur").Range("q7:q14").Copy Worksheets("tous").Cells(1, 1)
For feuille = 9 To nbfeuilles
NBL = Application.CountIf(Worksheets(feuille).Columns(1), "*")
correct = NBL - fin
NBL = correct
Worksheets(feuille).Range(Cells(depart, 1), Cells(NBL, 1)).Copy Worksheets("tous").Cells(total, 1)
total = total + NBL - depart + 1
Next feuille
feuille = Sheets.Count
NBL = Application.CountIf(Worksheets(feuille).Columns(1), "*")
Worksheets(feuille).Range(Cells(9, 1), Cells(NBL, 1)).Copy Worksheets("tous").Cells(total, 1)
Worksheets("tous").Activate
Chemin = ThisWorkbook.Path
NomFichier = Worksheets("récup calculateur").Range("m4").Value
ActiveSheet.Copy
ActiveWorkbook.SaveAs Chemin & "\" & NomFichier & ".gpx", _
FileFormat:=xlTextPrinter, CreateBackup:=False
ActiveWorkbook.Close
Worksheets("recup GPX").Activate
End Sub