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 :

Erreur lors du transfert de donnée d'Excel vers Word [XL-365]


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Novembre 2020
    Messages
    11
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Charente (Poitou Charente)

    Informations professionnelles :
    Activité : Administrateur de base de données

    Informations forums :
    Inscription : Novembre 2020
    Messages : 11
    Par défaut Erreur lors du transfert de donnée d'Excel vers Word
    Bonjour à tous,
    J'utilise un petit script VBA pour nourrir via un fichier excel un fichier Word.
    Pour cela j'utilise un controle de contenu dans mon fichier Word.
    Cela fonctionne bien tant que je ne n'insert pas de retour à la ligne dans mon code.

    Pourtant c'est cette fonctionnalité qui m'intéresse.

    Voici mon code qui génère une erreur 5844 :

    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
    Case "ref"
        Dim refText As String
        Dim rngContent4 As Word.Range
        Dim cc4 As ContentControl
     
        ' Rechercher le contrôle de contenu par son nom
        For Each cc4 In oDoc.ContentControls
            If cc4.Title = "ref" Then
                Set rngContent4 = cc4.Range
                Exit For
            End If
        Next cc4
     
        ' Vérifier si le contrôle de contenu a été trouvé
        If rngContent4 Is Nothing Then
            MsgBox "Le contrôle de contenu 'ref' n'a pas été trouvé.", vbExclamation
            Exit Sub
        End If
     
        ' Construire le texte
        refText = GenreAvict & " " & PrenomAvict & " " & NomAvict & Chr(13) & Chr(10) & _
                  "Conseil de " & Genrevict & " " & Prenomvict & " " & Nomvict & Chr(13) & Chr(10) & _
                  AdresseAvict & Chr(13) & Chr(10) & _
                  MailAvict
     
        ' Ajouter le texte dans le contrôle de contenu "ref"
        rngContent4.Text = refText
    J'ai essayé également avec vbCrLf sans plus de succés !

    Merci d'avance de votre aide

  2. #2
    Membre averti
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Novembre 2020
    Messages
    11
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Charente (Poitou Charente)

    Informations professionnelles :
    Activité : Administrateur de base de données

    Informations forums :
    Inscription : Novembre 2020
    Messages : 11
    Par défaut
    Bonjour, et merci de votre réponse.

    Je viens de tester Set rngContent4 = cc4.Range.Text

    J'ai un message d'erreur :

    Erreur de compilation : incompatibilité de type

  3. #3
    Expert confirmé
    Homme Profil pro
    retraité
    Inscrit en
    Juin 2012
    Messages
    3 432
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : retraité
    Secteur : Associations - ONG

    Informations forums :
    Inscription : Juin 2012
    Messages : 3 432
    Par défaut
    Oui, je me suis trompé et j'ai effacé le message ... mais pas assez vite. Je n'ai pas de solution à proposer (pour le moment au moins).
    Cdt.

  4. #4
    Expert confirmé
    Homme Profil pro
    retraité
    Inscrit en
    Juin 2012
    Messages
    3 432
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : retraité
    Secteur : Associations - ONG

    Informations forums :
    Inscription : Juin 2012
    Messages : 3 432
    Par défaut
    Essayer en utilisant Chr(6) qui correspond à wdLineBreak dans Word.
    Cordialement/

  5. #5
    Membre averti
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Novembre 2020
    Messages
    11
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Charente (Poitou Charente)

    Informations professionnelles :
    Activité : Administrateur de base de données

    Informations forums :
    Inscription : Novembre 2020
    Messages : 11
    Par défaut
    Merci j'ai testé, il n'y a pas d'erreur mais il n'y a pas non plus de retour à la ligne

  6. #6
    Rédacteur
    Avatar de Philippe Tulliez
    Homme Profil pro
    Formateur, développeur et consultant Excel, Access, Word et VBA
    Inscrit en
    Janvier 2010
    Messages
    13 174
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Formateur, développeur et consultant Excel, Access, Word et VBA

    Informations forums :
    Inscription : Janvier 2010
    Messages : 13 174
    Billets dans le blog
    53
    Par défaut
    Bonjour,
    Un retour à la ligne, c'est vbLf ou chr(10)

    Voici le code VBA dans Word (à adapter dans VBA Excel) qui écrit un texte dans un contrôle du contenu de texte enrichi qui se trouve dans un document Word qui sert de modèle
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    Sub t()
     Dim cc As ContentControl
     For Each cc In ActiveDocument.Range.ContentControls
       cc.Range.Text = "Hello" & vbLf & "World"
     Next
     Set cc = Nothing
    End Sub
    Pour insérer un retour à la ligne (comme le raccourci clavier Alt + Entrée), il y a lieu d'utiliser Chr(11) au lieu de vbLf.

    [EDIT]
    Je complète ma réponse.
    S'il s'agit d'envoyer des données d'Excel vers Word, je suppose que celles-ci sont dans des cellules d'excel or le code de saut de ligne est le même dans excel et word donc il n'y pas de raison d'en ajouter.
    De plus je ne peux que conseiller d'utiliser la propriété Tag du contrôle de contenu de Word que l'on peut ainsi remplir directement sans passer par une boucle en associant le même nom à la cellule d'excel qui contient le texte à copier.

    Voici un exemple de l'envoi de données du contenu d'une cellule nommée "Resume" vers un contrôle du contenu de texte enrichi dont la balise porte le même nom que la cellule et qui se trouve dans un document Word nommé Offre_Template.docx et servant de modèle.
    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
    Sub T()
      Const SubFolder As String = "\Template\"
      Const TagName As String = "Resume"
      Const Template As String = "Offre_Template.docx"
      Dim appWord As Object  ' Application Word
      Dim doc As Object      ' Document Word
      Dim ccs As Object      ' Collection de contrôles de contenu
      Dim FullName As String
     
      ' Chemin vers votre modèle Word
      FullName = ThisWorkbook.Path & SubFolder & Template
     
      ' Crée une nouvelle instance de Word ou utilise une instance ouverte
      On Error Resume Next
      Set appWord = GetObject(, "Word.Application")
      If appWord Is Nothing Then Set appWord = CreateObject("Word.Application")
      On Error GoTo 0
      ' Ouvrir le modèle Word
      Set doc = appWord.Documents.Add(Template:=FullName)
      ' Accéder au contrôle de contenu avec la balise "Resume"
      Set ccs = doc.SelectContentControlsByTag(TagName)
      If ccs.Count > 0 Then
          ccs(1).Range.Text = ThisWorkbook.Names(TagName ).RefersToRange.Value
      End If
      ' Afficher Word
      appWord.Visible = True
      ' Libère la mémoire
      Set ccs = Nothing: Set doc = Nothing: Set appWord = Nothing
    End Sub
    Philippe Tulliez
    Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément. (Nicolas Boileau)
    Lorsque vous avez la réponse à votre question, n'oubliez pas de cliquer sur et si celle-ci est pertinente pensez à voter
    Mes tutoriels : Utilisation de l'assistant « Insertion de fonction », Les filtres avancés ou élaborés dans Excel
    Mon dernier billet : Utilisation de la fonction Dir en VBA pour vérifier l'existence d'un fichier

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Transfert de données d'excel vers un mail
    Par porsoni dans le forum Macros et VBA Excel
    Réponses: 0
    Dernier message: 16/05/2014, 13h25
  2. Transfert de données d'excel vers access
    Par mataw dans le forum VBA Access
    Réponses: 1
    Dernier message: 04/04/2012, 09h04
  3. Transfert de données de Excel vers Word
    Par skanderhassayoune dans le forum VBA Word
    Réponses: 1
    Dernier message: 23/02/2011, 22h06
  4. Transfert de données de excel vers le logiciel sage Integrale 5.0
    Par chris67 dans le forum Macros et VBA Excel
    Réponses: 12
    Dernier message: 22/09/2008, 15h32
  5. transfert de donnés de excel vers Mysql
    Par mkachekh dans le forum Outils
    Réponses: 4
    Dernier message: 20/10/2006, 12h08

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