Précédent   Forum des professionnels en informatique > Logiciels > Microsoft Office > Excel > Macros et VBA Excel
Macros et VBA Excel Vos questions relatives aux macros Excel, à l'utilisation de VBA et à l'automatisation de vos classeurs Excel.
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 18/10/2011, 10h28   #1
Invité de passage
 
Homme
ingénieur d'études
Inscription : juin 2011
Messages : 5
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France

Informations professionnelles :
Activité : ingénieur d'études
Secteur : Agroalimentaire - Agriculture

Informations forums :
Inscription : juin 2011
Messages : 5
Points : 2
Points : 2
Par défaut Exporter des feuilles graphiques

Bonjour,
Je cherche dans cette macro à repérer toutes les feuilles commençant par "Graph". Je cherche à les repérer toutes (leur nombre peut varier) et à les exporter vers un nouveau classeur.
Ce classeur doit donc s'ouvrir avec le nombre de feuilles égal au nombre d'éléments graphiques trouvés ...
Ensuite j'enregistre ce nouveau classeur dans le même répertoire que mon classeur initial.
Pouvez-vous me dire ce qui ne va pas dans mon code ?
Merci

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
 
Sub exporterGraphiques()
Dim c1                        As Workbook
Dim c2                        As Workbook
Dim sh                        As Worksheet
'Dim compt                   As integer
 
 
Workbooks.Add
Set c2 = ActiveWorkbook
Set c1 = ThisWorkbook
 
c1.Activate
 
For Each sh In Sheets
    c1.Activate
    If Left(sh.Name, 5) = "Graph" Then
 
'compt = compt + 1
sh.Activate
ActiveSheet.Copy
c2.Activate
ActiveSheet.Paste
 
   Else
     sh.Select
    'rien
    End If
 
Next
 
c2.SaveAs c1.Path & "\Résulats" & Format(Now, "yyyymmddhhnn") & ".xlsx"
c2.Close
Set c2 = Nothing
 
End Sub
Arapaima est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 18/10/2011, 11h20   #2
Expert Confirmé Sénior
 
Homme Daniel
aucune
Inscription : septembre 2011
Messages : 2 004
Détails du profil
Informations personnelles :
Nom : Homme Daniel
Localisation : France, Seine et Marne (Île de France)

Informations professionnelles :
Activité : aucune

Informations forums :
Inscription : septembre 2011
Messages : 2 004
Points : 4 037
Points : 4 037
Bonjour,

Tu ne peux pas utiliser "Worksheet" pour les feuilles graphiques; ce sont des feuilles de calcul. Utilise "Chart" et "Charts" :

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
Sub exporterGraphiques()
Dim c1                        As Workbook
Dim c2                        As Workbook
Dim sh                        As Chart
'Dim compt                   As integer
 
 
Workbooks.Add
Set c2 = ActiveWorkbook
Set c1 = ThisWorkbook
 
c1.Activate
 
For Each sh In Charts
    c1.Activate
    If Left(sh.Name, 5) = "Graph" Then
 
'compt = compt + 1
sh.Activate
ActiveSheet.Copy
c2.Activate
ActiveSheet.Paste
 
   Else
     sh.Select
    'rien
    End If
 
Next
 
c2.SaveAs c1.Path & "\Résulats" & Format(Now, "yyyymmddhhnn") & ".xlsx"
c2.Close
Set c2 = Nothing
 
End Sub
__________________
Cordialement.

Daniel

Citation:
La plus perdue de toutes les journées est celle où l'on n'a pas ri.
Chamfort
Daniel.C est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 18/10/2011, 13h14   #3
Invité de passage
 
Homme
ingénieur d'études
Inscription : juin 2011
Messages : 5
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France

Informations professionnelles :
Activité : ingénieur d'études
Secteur : Agroalimentaire - Agriculture

Informations forums :
Inscription : juin 2011
Messages : 5
Points : 2
Points : 2
Merci,

Mais il me semble que le problème vient plutot du fait que je n 'arrive pas à exporter vers un autre classeur;
Mon code reconnait les feuilles (sheet ou chart) dont le nom commence par "graph", mais ne les exporte pas.
Ne marche pas ...

Autre question: Comment appeler une feuille par son nom (Name) et non pas par son nom Name sans parenthese ... (l'équivalent de sheet.name avec (Name) )
Arapaima est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 18/10/2011, 15h07   #4
Expert Confirmé Sénior
 
Homme Daniel
aucune
Inscription : septembre 2011
Messages : 2 004
Détails du profil
Informations personnelles :
Nom : Homme Daniel
Localisation : France, Seine et Marne (Île de France)

Informations professionnelles :
Activité : aucune

Informations forums :
Inscription : septembre 2011
Messages : 2 004
Points : 4 037
Points : 4 037
Le code suivant est testé sauf la partie enregistrement du classeur résultat :

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
Sub exporterGraphiques()
Dim c1                        As Workbook
Dim c2                        As Workbook
Dim sh                        As Chart
'Dim compt                   As integer
 
 
Workbooks.Add 1
Set c2 = ActiveWorkbook
Set c1 = ThisWorkbook
 
c1.Activate
 
For Each sh In Charts
    c1.Activate
    If Left(sh.Name, 5) = "Graph" Then
 
    'compt = compt + 1
    sh.Copy before:=c2.Sheets(1)
End If
 
Next
 
c2.SaveAs c1.Path & "\Résulats" & Format(Now, "yyyymmddhhnn") & ".xlsx"
c2.Close
Set c2 = Nothing
 
End Sub
__________________
Cordialement.

Daniel

Citation:
La plus perdue de toutes les journées est celle où l'on n'a pas ri.
Chamfort
Daniel.C est déconnecté   Envoyer un message privé Réponse avec citation 10
Vieux 18/10/2011, 15h59   #5
Invité de passage
 
Homme
ingénieur d'études
Inscription : juin 2011
Messages : 5
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France

Informations professionnelles :
Activité : ingénieur d'études
Secteur : Agroalimentaire - Agriculture

Informations forums :
Inscription : juin 2011
Messages : 5
Points : 2
Points : 2
Parfait, ça marche.
Merci
Arapaima est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 05h20.


 
 
 
 
Partenaires

Hébergement Web