Précédent   Forum des professionnels en informatique > Logiciels > Microsoft Office > Word > VBA Word
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 08/12/2010, 16h15   #1
Candidat au titre de Membre du Club
 
Inscription : septembre 2004
Messages : 44
Détails du profil
Informations forums :
Inscription : septembre 2004
Messages : 44
Points : 12
Points : 12
Par défaut Créer un fichier excel depuis VBA Word

Salut à tous,

J'aimerais me faire une macro de copie de données depuis Word vers Excel, rien de méchant.

J'ai un problème sur la création du fichier Excel au début de ma macro et je ne vois pas pourquoi, j'ai besoin d'un coup de patte

c'est très basique, j'ai récupéré le code qui est censé marcher, j'ai vérifié sur plusieurs sites.

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
Sub creer_tableau()
    Dim excl As New Excel.Application  'il plante ici "type défini par l'utilisateur non défini"
    Dim livre As New Excel.Workbook
    Dim feuille As New Excel.Worksheet
    Dim nom_fichier As String
    nom_fichier = "c:\test.xls"
 
    excl.Visible = True
 
    'tout le code pour 
    'construire mon tableau
    'va ici
 
    livre.SaveAs nom_fichier
    Set livre = Nothing
    livre.Close
    excl.Quit
    Set excl = Nothing
End Sub
Est-ce que je dois importer quelque chose pour utiliser cet appel ? Je ne vois pas pourquoi ça ne marche pas.

Merci à celui qui pourra me débloquer
chateau_dur est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 08/12/2010, 17h32   #2
Responsable Word

 
Avatar de Heureux-oli
 
Homme Olivier Lebeau
Contrôleur d'industrie
Inscription : février 2006
Messages : 17 315
Détails du profil
Informations personnelles :
Nom : Homme Olivier Lebeau
Âge : 47
Localisation : Belgique

Informations professionnelles :
Activité : Contrôleur d'industrie
Secteur : Aéronautique - Marine - Espace - Armement

Informations forums :
Inscription : février 2006
Messages : 17 315
Points : 29 213
Points : 29 213
Salut,

Il manque une référence dans ton projet.

Outils => Références => Microsoft Excel XX.X
__________________
J'ai pas encore de décodeur, alors, postez en clair ! Comment mettre une balise de code ?
Débutez en VBA

Mes articles


Dans un MP, vous pouvez me dire que je suis beau, ... mais si c'est une question technique je ne la lis pas ! Vous êtes prévenus !
Heureux-oli est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 08/12/2010, 18h14   #3
Candidat au titre de Membre du Club
 
Inscription : septembre 2004
Messages : 44
Détails du profil
Informations forums :
Inscription : septembre 2004
Messages : 44
Points : 12
Points : 12
Merci, ça marche tout de suite mieux
chateau_dur est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 08/12/2010, 18h51   #4
Candidat au titre de Membre du Club
 
Inscription : septembre 2004
Messages : 44
Détails du profil
Informations forums :
Inscription : septembre 2004
Messages : 44
Points : 12
Points : 12
J'ai une autre petite question.

Mon fichier excel se créé, mais ça plante lorsque j'utilise le code pour ecrire mon tableau. Le code en question, je l'ai récupéré de l'enregistreur de macro.

Code :
1
2
3
4
5
6
7
 
Sub construire_tableau()
    ActiveCell.FormulaR1C1 = "Titre"
    Range("A3").Select     'plantage ici, type d'argument incorrect"
    ActiveCell.Value = "Numéro"
    Range("B3").Select
    ...
et j'appelle cette fonction avec ça :

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
Sub creer_tableau(nom_fichier As String)
    Dim excl As New Excel.Application
    Dim classeur As New Excel.Workbook
    Dim feuille As New Excel.Worksheet
 
    Set classeur = excl.WorkBooks.Add
    excl.Visible = True
    construire_tableau
    classeur.SaveAs nom_fichier
    Set classeur = Nothing
    classeur.Close
    excl.Quit
    Set excl = Nothing
End Sub

Pareil, je ne vois pas pourquoi, quelqu'un a une idée s'il vous plait ?

Merci !
chateau_dur est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 08/12/2010, 21h20   #5
Responsable Word

 
Avatar de Heureux-oli
 
Homme Olivier Lebeau
Contrôleur d'industrie
Inscription : février 2006
Messages : 17 315
Détails du profil
Informations personnelles :
Nom : Homme Olivier Lebeau
Âge : 47
Localisation : Belgique

Informations professionnelles :
Activité : Contrôleur d'industrie
Secteur : Aéronautique - Marine - Espace - Armement

Informations forums :
Inscription : février 2006
Messages : 17 315
Points : 29 213
Points : 29 213
Salut,

Si tu ne passe pas d'argument, le code ne sait pas où aller écrire les données.

Dans ta procédure, tu déclares les variables en local, elles sont disponibles dans ta procédure.
Utiliser une autre procédure ne permet pas d'utiliser ces variables ou objet.

http://heureuxoli.developpez.com/office/word/vba-all/
__________________
J'ai pas encore de décodeur, alors, postez en clair ! Comment mettre une balise de code ?
Débutez en VBA

Mes articles


Dans un MP, vous pouvez me dire que je suis beau, ... mais si c'est une question technique je ne la lis pas ! Vous êtes prévenus !
Heureux-oli est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 09/12/2010, 14h00   #6
Candidat au titre de Membre du Club
 
Inscription : septembre 2004
Messages : 44
Détails du profil
Informations forums :
Inscription : septembre 2004
Messages : 44
Points : 12
Points : 12
Salut,

Merci pour la réponse, en fait j'ai toujours un problème...

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
Sub creer_tableau(nom_fichier As String)
    Dim excl As New excel.Application
    Dim classeur As New excel.Workbook
    Dim feuille As New excel.Worksheet
 
    Set classeur = excl.WorkBooks.Add
    excl.Visible = True
    construire_tableau feuille, excl, classeur
    classeur.SaveAs nom_fichier
    Set classeur = Nothing
    classeur.Close
    excl.Quit
    Set excl = Nothing
End Sub
 
Sub construire_tableau(feuille As excel.Worksheet, excl As excel.Application, classeur As excel.Workbook)
    ActiveCell.FormulaR1C1 = "Titre"
    Range("A3").Select
    ActiveCell.Value = "Numéro"
    Range("B3").Select
    ActiveCell.Value = "Terme Fr"
    Range("C3").Select
    ActiveCell.Value = "Cat. Gram."
...
Mais maintenant il me dit "La classe ne gère pas Automation ou l'interface attendue" sur mon appel de "construire_tableau". L'aide de VBA ne m'aide pas.

Ce qui m'étonne c'est qu'avant que je passe mes paramètres comme maintenant, il m'écrivait quand même mon "Titre" dans mon fichier excel et plantait sur l'instruction Range qui suit. C'est donc bien que les objets actifs sont déclarés d'office en public ? J'ai beaucoup de mal avec le VBA...

Si quelqu'un peut encore m'aider juste pour qu'il rentre une bonne fois pour toute dans ma sub de creation de tableau et qu'il veuille bien m'exécuter son propre code sans se plaindre, ce serait royal.

Merci encore.
chateau_dur est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 09/12/2010, 14h56   #7
Responsable Word

 
Avatar de Heureux-oli
 
Homme Olivier Lebeau
Contrôleur d'industrie
Inscription : février 2006
Messages : 17 315
Détails du profil
Informations personnelles :
Nom : Homme Olivier Lebeau
Âge : 47
Localisation : Belgique

Informations professionnelles :
Activité : Contrôleur d'industrie
Secteur : Aéronautique - Marine - Espace - Armement

Informations forums :
Inscription : février 2006
Messages : 17 315
Points : 29 213
Points : 29 213
Salut,

Voilà un code qui marche.

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
 
Sub creer_tableau()
    Dim excl As New Excel.Application
    Dim classeur As Excel.Workbook
    Dim feuille As Excel.Worksheet
 
    Set classeur = excl.WorkBooks.Add
    Set feuille = classeur.Worksheets.Add
 
    excl.Visible = True
    'construire_tableau feuille, excl, classeur
    classeur.SaveAs "C:\temp\olivier.xls"
    feuille.Range("A1") = "Moi"
 
End Sub
__________________
J'ai pas encore de décodeur, alors, postez en clair ! Comment mettre une balise de code ?
Débutez en VBA

Mes articles


Dans un MP, vous pouvez me dire que je suis beau, ... mais si c'est une question technique je ne la lis pas ! Vous êtes prévenus !
Heureux-oli est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 09/12/2010, 16h10   #8
Candidat au titre de Membre du Club
 
Inscription : septembre 2004
Messages : 44
Détails du profil
Informations forums :
Inscription : septembre 2004
Messages : 44
Points : 12
Points : 12
Excellent, ça marche, merci !

Enfin j'ai juste une dernière question après j'arrête de faire le lourd !

Pour faire mon tableau, j'utilise des couleurs de police offerte par le thème par défaut.

c'est :
Code :
1
2
    With Selection.Font
       .ThemeColor = xlThemeColorLight1
Mais il me dit que la méthode/attirbut .ThemeColor n'existe pas.

J'utilise aussi un système de liste déroulante pour la validation de quelques cellules. Même chose, "Selection.Validation" n'existe pas pour lui.

Code :
1
2
3
4
5
6
7
8
9
feuille.Range("E4:E500").Select
    With Selection.Validation
        .Delete
        .Add Type:=xlValidateList, AlertStyle:=xlValidAlertStop, Operator:= _
        xlBetween, Formula1:="=$L$3:$L$4"
        .IgnoreBlank = True
        .ShowInput = True
        .ShowError = True
    End With
J'ai bien les même réferences dans le VBA Word que lorsque je lance l'enregistrement de macro sous Excel.

Y a-t-il quelque chose de spécial à faire pour utiliser ces méthodes ?

Vive le VBA
chateau_dur est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 17h27.


 
 
 
 
Partenaires

Hébergement Web