waramer
Messages postés11Date d'inscriptionmercredi 11 juillet 2018StatutMembreDernière intervention19 juillet 2018
-
Modifié le 11 juil. 2018 à 11:25
waramer
Messages postés11Date d'inscriptionmercredi 11 juillet 2018StatutMembreDernière intervention19 juillet 2018
-
11 juil. 2018 à 17:00
Bonjour amis développeurs,
Je suis dans une situation assez complexe. En effet, étant un simple amateur en code VBA, je vous écris dans l'espoir d'obtenir une aide.
J'ai actuellement un fichier excel composé de plusieurs feuilles dans lesquelles sont classés tout les agents d'une compagnie.
Je souhaite enregistrer chaque feuille dans un nouveau fichier excel. Dans ces feuilles, les données qui m'intéressent ont pour range ("O1:Q28").
De plus, chaque feuille doit avoir un nom spécifique. Ce nom se trouve dans la colonne E de ma Sheet 3 ("E1:E30").
Voilà mon début de code qui ne fonctionne pas "entièrement"
Sub save() Dim wb As Workbook Set wb = Workbooks.Add Dim plage As Range Set plage = Range("O1:Q28") Dim shCounter As Integer shCounter = 28 Dim name As Range name = Workbook(3).Range("E" & shCounter).Value Dim ws As Worksheet For shCounter = 4 To ThisWorkbook.Sheets.Count ThisWorkbook.Sheets(4).Activate plage.Copy wb.SaveAs "F:\Partages\Commun_DRH\Taux de recouvrement\Evolution\2018 - " & name Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _ :=False, Transpose:=False
Next shCounter
End Sub
je sais qu'il y a un gros problème avec ma variable "Name" mais aussi avec la copie et l'enregistrement du nouveau fichier excel !
waramer
Messages postés11Date d'inscriptionmercredi 11 juillet 2018StatutMembreDernière intervention19 juillet 2018 Modifié le 11 juil. 2018 à 16:07
Merci pour vos réponses,
J'ai modifié mon code, ce qui me donne :
Sub save()
Dim wb As Workbook
Set wb = Workbooks.Add
Dim shCounter As Integer
Dim ws As Worksheet
For shCounter = 4 To ThisWorkbook.Sheets.Count
Dim name As String
name = ThisWorkbook.Sheets(3).Range("E" & shCounter).Value
ThisWorkbook.Sheets(shCounter).Activate
Range("O1:Q28").Copy
wb.SaveAs "F:\Partages\Commun_DRH\Taux de recouvrement\Evolution\" & name
Range("A1").Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
Next shCounter
End Sub
EDIT : Ajout du LANGAGE dans les BALISES DE CODE pour avoir la coloration syntaxique !!
Cependant, je ne sais pas quel code utiliser pour que Excel Active ma nouvelle feuille pour coller ma Range("O1:Q28").
Le code :
Active.Sheet.Name
ne fonctionne pas.
Merci pour votre aide :)
jordane45
Messages postés37284Date d'inscriptionmercredi 22 octobre 2003StatutModérateurDernière intervention30 mars 2023341 11 juil. 2018 à 16:09
11 juil. 2018 à 14:17
C'est vrai que après refléxion je ne vois pas pourquoi j'ai mis un "Range". Cependant,
cette ligne de code ne fonctionne toujours pas et affiche une erreur. "Erreur de compilation"...
11 juil. 2018 à 14:19
11 juil. 2018 à 14:29
11 juil. 2018 à 15:50
En gros la structure c'est:
Donc, par exemple
Bien entendu, thisWorkBook est facultatif.
Tu pourrais aussi, si tu travailles sur la feuille "active" directement utiliser