IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Macros et VBA Excel Discussion :

Macros et VBA Excel: élémentaire ?


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé Avatar de touche_a_tout
    Profil pro
    Inscrit en
    Août 2006
    Messages
    544
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Août 2006
    Messages : 544
    Par défaut 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 Donc quelque chose m'échappe. Voici mon code:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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

  2. #2
    Membre Expert Avatar de Nain porte koi
    Homme Profil pro
    peu importe
    Inscrit en
    Novembre 2023
    Messages
    1 177
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : peu importe

    Informations forums :
    Inscription : Novembre 2023
    Messages : 1 177
    Par défaut
    Hello,

    2 choses :
    1. pouvez vous fournir le fichier word pour que nous puissions tester ?
    2. sans aller bien loin dans votre code "E2:" c'est quoi ? parce que à ma connaissance une unité de disque est nommée avec une seule lettre et certainement pas de chiffre.

    Je terminerais par remplacer
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    ThisWorkbook.Sheets("Hugo").Activate
    ActiveSheet.Visible = True
    Cells(1, 1).Select
    ActiveSheet.Paste
    par
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ThisWorkbook.Sheets("Hugo").Cells(1, 1).Paste
    (à vérifier quand même) car il n'est pas nécessaire de sélectionner et ça évite les "clignotements" et autres affichages bizarres.

  3. #3
    Expert confirmé

    Homme Profil pro
    Curieux
    Inscrit en
    Juillet 2012
    Messages
    5 169
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Curieux
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Juillet 2012
    Messages : 5 169
    Billets dans le blog
    5
    Par défaut
    Bonjour,

    par ailleurs, WordDoc n'est pas instancié par l'instruction Set

  4. #4
    Membre Expert
    Inscrit en
    Décembre 2002
    Messages
    993
    Détails du profil
    Informations forums :
    Inscription : Décembre 2002
    Messages : 993
    Par défaut
    Salut, j'ai apporté quelques corrections, teste comme ceci:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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
    41
    42
    43
    44
    45
    46
    47
    Sub report_texte()
        Dim appWord As Object
        Dim WordDoc As Object
        Dim Fermer_Word As Boolean
        Dim Ligne As Long
        Dim Colonne As Long
        Dim Texte As String
        Dim Mots() As String
        Dim i As Long
     
        Ligne = 1
        Colonne = 1
        Fermer_Word = False
     
        On Error Resume Next
        ' Créer une instance de Word
        Set appWord = GetObject(, "Word.Application") ' Vérifie 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
     
        Set WordDoc = appWord.Documents.Open("E:\2_M_E_S__P_R_O_J_E_T_S\Périple\5eme_analyse\colonne_LES_MISÉRABLES.docx")
     
        ' Lire le contenu du document
        Texte = WordDoc.Content.Text
        Mots = Split(Texte, " ")
     
        ' Transfert vers Excel
        With ThisWorkbook.Sheets("Hugo")
            For i = LBound(Mots) To UBound(Mots)
                .Cells(Ligne, Colonne).Value = Trim(Mots(i))
                Ligne = Ligne + 1
            Next i
        End With
     
        WordDoc.Close False
     
        If Fermer_Word Then appWord.Quit
     
        ' Libérer les objets
        Set WordDoc = Nothing
        Set appWord = Nothing
     
        MsgBox "Transfert terminé avec succès*!", vbInformation
    End Sub

  5. #5
    Membre éclairé Avatar de touche_a_tout
    Profil pro
    Inscrit en
    Août 2006
    Messages
    544
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Août 2006
    Messages : 544
    Par défaut 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

  6. #6
    Membre éclairé Avatar de touche_a_tout
    Profil pro
    Inscrit en
    Août 2006
    Messages
    544
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Août 2006
    Messages : 544
    Par défaut Macros et VBA Excel: élémentaire ?
    Post Scriptum:
    Bonjour et merci à Franc, bien entendu.
    touche_a_tout

  7. #7
    Membre Expert Avatar de Nain porte koi
    Homme Profil pro
    peu importe
    Inscrit en
    Novembre 2023
    Messages
    1 177
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : peu importe

    Informations forums :
    Inscription : Novembre 2023
    Messages : 1 177
    Par défaut
    Citation Envoyé par touche_a_tout Voir le message
    Ce code est plein de fautes de frappe et d'incohérences.
    Donc il ne risque pas de fonctionner.

    Moi je veux bien VOTRE fichier Excel avec le code corrigé, et un extrait du fichier colonne_LES_MISÉRABLES.docx, pas besoin de la totalité.

Discussions similaires

  1. Réponses: 2
    Dernier message: 27/09/2018, 01h49
  2. macros et vba excel envoi de mails multiples
    Par dembasba dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 13/09/2011, 21h41
  3. Macros et VBA Excel
    Par sousou94 dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 05/09/2010, 16h59
  4. [VBA-E]Macros Et Vba Excell ?
    Par webconcept1 dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 02/05/2007, 23h16

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo