Macros et VBA Excel: élémentaire ?
Bonsoir,
Je suis sûr que c'est enfantin mais je patauge. J'ai d'une part un fichier Word (pour tester le code j'ai pris un extrait des Misérables) et d'autre part une feuille Excel du classeur qui contient les macros. Objectif: copier le texte Word (disposé en colonne, 1 mot par ligne) et le coller dans la première colonne de la feuille Excel (1 mot par cellule). VBA me signale 2 types d'erreurs: "Objet requis" et "Variable non définie". Pourtant toutes mes variables sont définies et j'ai déclaré comme objets ce qui devait l'être. Enfin je crois :oops: Donc quelque chose m'échappe. Voici mon code:
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
| Sub report_texte(ligne, colonne)
Dim appWord As Object
Dim Fermer_Word As Boolean
Dim WordApp As Object
Dim WordDoc As Object
ligne = 1
colonne = 1
compteur = 0
' Créer une instance de Word
On Error Resume Next
Set appWord = GetObject("Word.Application") ' Vérif si Word est déjà ouvert
If appWord Is Nothing Then
Set appWord = CreateObject("Word.Application") ' Sinon, ouvrir une nouvelle instance
'Fermer_Word = True
End If
On Error GoTo 0
' transférer le texte
' Ouvrir le document
appWord.Documents.Open ("E2:\2_M_E_S__P_R_O_J_E_T_S\Périple\5eme_analyse\colonne_LES_MISÉRABLES.docx")
WordDoc.GetObject ("E2:\2_M_E_S__P_R_O_J_E_T_S\Périple\5eme_analyse\colonne_LES_MISÉRABLES.docx")
WordDoc.Copy 'ici erreur variable non définie
ThisWorkbook.Sheets("Hugo").Activate
ActiveSheet.Visible = True
Cells(1, 1).Select
ActiveSheet.Paste
End Sub |
En VBA, ça fait depuis 2006 que je débute, ceci explique cela. Merci à quiconque me tirera de cette impasse.
Cordialement
touche_a_tout
Macros et VBA Excel: élémentaire ?
Merci à vous deux,
Ce code est plein de fautes de frappe et d'incohérences. Le disque s'appelle E, bien entendu, "surnommé" Data2 (voilà le 2) parce que j'ai partitionné le disque d'origine. Incohérence: dans l'original il y a un underscore entre colonne et LES mais pas entre LES et MISÉRABLES. Certaines lettres sont accentuées, d'autres pas.
J'ai fait ces corrections mais maintenant le code cycle à la ligne 23 et je dois faire un Ctrl_Alt/Del pour l'arrêter.
J'ai fait le test avec les modifications de Franc mais ça cycle aussi, ligne 24.
Après un Ctrl-Alt/Del j'ai remarqué que j'avais jusqu'à 4 mentions de Word; il semble donc que le code crée trop de documents Word mais je ne sais pas à quel stade.
Le document "colonne_LES_MISÉRABLES.docx" est lourd et j'attends votre avis sur ce qui précède pour le joindre à un post.
Merci de vous pencher sur mes barbouillages.
Cordialement
touche_a_tout
Macros et VBA Excel: élémentaire ?
Post Scriptum:
Bonjour et merci à Franc, bien entendu.
touche_a_tout
1 pièce(s) jointe(s)
Macros et VBA Excel: élémentaire ?
Salut,
Ton avatar qualifie parfaitement ma manière de coder, j'en suis conscient et ça ne s'améliore pas avec l'âge :( .
Le code est un extrait, ça se voit. Il bloque sur l'antépénultième ligne.
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 37 38 39 40
| Sub Prep_analyse_vocabulaire()
Dim ligne, colonne As Integer
'préparation du manus
'Call corr_word
'préparation des feuilles
'Call suppr_feuilles_en_trop(Ligne, Colonne)
'Call Cree_feuilles_tri(Ligne, Colonne)
Call report_texte(ligne, colonne)
'Call report_fragments(ligne, colonne)
End Sub
Sub report_texte(ligne, colonne)
Dim appWord As Object
Dim Fermer_Word As Boolean
Dim WordApp As Object
Dim WordDoc As Object
ligne = 1
colonne = 1
' Créer une instance de Word
On Error Resume Next
Set appWord = GetObject("Word.Application") ' Vérif si Word est déjà ouvert
If appWord Is Nothing Then
Set appWord = CreateObject("Word.Application") ' Sinon, ouvrir une nouvelle instance
'Fermer_Word = True
End If
On Error GoTo 0
' transférer le texte
' Ouvrir le document
appWord.Documents.Open ("E:\2_M_E_S__P_R_O_J_E_T_S\Périple<4eme_analyse\colonne_LES_MISÉRABLES.docx")
Set WordDoc = GetObject("E:\2_M_E_S__P_R_O_J_E_T_S\Périple\4eme_analyse\colonne_LES_MISÉRABLES.docx")
WordDoc.Copy 'erreur propriété ou méthode non gérée par cet objet
ThisWorkbook.Sheets("Hugo").Cells(1, 1).Paste
End Sub |
Le fichier Word est aussi un extrait. S'il est trop court, je peux y remédier.Pièce jointe 663456
Merci de continuer ce pensum !
Cordialement
touche_a_tout
Macros et VBA Excel: élémentaire ?
Bonsoir Franc et merci,
Désolé, mais chez moi ça ne fonctionne pas. Ca cycle de nouveau, à la ligne 15 sauf erreur.
Une précision: dans ta version du code, il reste une faute de frappe (à moi); le docx sur mon HD est au sous-répertoire 4eme et non 5eme analyse. Comme ça tourne sur ma machine, j'ai corrigé, ça m'a paru logique.
Mais il faut m'expliquer un truc: tu parles du docx que j'ai fourni; j'ai contrôlé l'annexe du post en question, elle fait environ 13 Ko, c'est un extrait; le fichier entier qui est sur mon HD fait 53 Ko. Comment te l'es-tu procuré ?
Une autre chose m'échappe: les deux fichiers docx sont déjà disposés en colonne, 1 mot par ligne, donc pourquoi fais-tu un split par lignes ?
Merci de passer du temps sur cette bidouille, je n'imaginais pas qu'elle poserait autant de problèmes (et ce n'est pas fini, hélas)
Cordialement
touche_a_tout
Macros et VBA Excel: élémentaire ?
Bonjour Franc et merci.
Je vois ce que tu veux dire. En tout cas le résultat en colonne A est exactement ce que je cherchais mais je ne m'explique toujours pas ton split puisque mon docx était déjà en colonne un mot par ligne. Mais peu importe, le problème est: pourquoi est-ce que ça tourne en rond à l'infini sur ma machine à cause d'un "Set" puisque ton code est syntaxiquement irréprochable ? Grâce à "FermerWord = True" je n'ai plus qu'un fichier .docx à chaque exécution, c'est ok.
Mais pour le reste je m'arrache les cheveux !
Cordialement
touche_a_tout
[XL-2016] Macros et VBA Excel: élémentaire ? Votre message
Bonjour Nain_porte_koi et merci,
Tout est clair maintenant et en plus, le code de Franc fonctionne. Maintenant je vais le réintégrer à mon app, dont il n'est qu'un des "épisodes", pour voir s'il fonctionne toujours.
Merci à tous
Cordialement
touche_a_tout
[XL-2016] Macros et VBA Excel: élémentaire ?
Bonjour Franc, Help !!
Le code de ton post #9 fonctionnait à merveille jusqu'à hier soir et ce matin il bloque sur la ligne 15 avec le message "Un composant ActiveX ne peut pas créer d'objet". Pour moi c'est incompréhensible ! C'était une sub qui tournait comme une horloge et tout à coup ça ne marche plus. Je ne me rappelle pas avoir effectué un changement quelconque. As-tu une idée de ce qui se passe ?
Merci d'avance.
Cordialement
touche_a_tout
[XL-2016] Macros et VBA Excel: élémentaire ?
Bonjour et merci,
En fait j'avais déplacé la moulinette en question à un autre endroit de la sub et, quand je l'ai remise à sa place initiale, le problème avait disparu. Il n'y a donc plus de souci. Merci à tous de vos interventions.
Cordialement
touche_a_tout