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 :

Problème macro qui BOUCLE sans raison [XL-2013]


Sujet :

Macros et VBA Excel

  1. #1
    Nouveau membre du Club
    Homme Profil pro
    retraite
    Inscrit en
    Décembre 2012
    Messages
    38
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : retraite
    Secteur : Transports

    Informations forums :
    Inscription : Décembre 2012
    Messages : 38
    Points : 38
    Points
    38
    Par défaut Problème macro qui BOUCLE sans raison
    Bonjour à toutes et à tous,
    Mon problème est le suivant :
    Je souhaite exporter une plage contenue dans une feuille Excel, vers un nouveau document WORD prenant en compte les macros Word.
    Ma plage se nomme : « TxT_EXPORT ».
    Pour se faire j’ai copié plusieurs macros trouvées sur la toile.
    • Sub Excel_Word()
    • Sub Excel_Word02()
    • Sub Passage_Excel_Word()
    • Sub EnvoyerTableauxExcelVersWord_V02()
    Chaque macros se relance dès que le code arrive à la ligne suivante :

    oWdApp.Selection.Paste

    A PARTIR DE CETTE LIGNE UNE BOUCLE S'INSTALLE

    Je ne comprends pas pourquoi pouvez-vous m’aider ?
    Mes codes sont brouillons suite à des modifications brouillonnes.
    Je vous prie de m’en excuser.
    Merci d’avance pour votre aide.
    En PJ un fichier exemple.
    Fichiers attachés Fichiers attachés

  2. #2
    Expert confirmé Avatar de illight
    Homme Profil pro
    Analyste décisionnel
    Inscrit en
    Septembre 2005
    Messages
    2 338
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Analyste décisionnel
    Secteur : Service public

    Informations forums :
    Inscription : Septembre 2005
    Messages : 2 338
    Points : 4 295
    Points
    4 295
    Par défaut
    Bonjour,


    Il aurait été bien que tu copie tes macros ici directement (dans des balises CODE bien entendu ) car peu de gens sont disposés à ouvrir des fichiers joints
    1. Avant de poster, et http://www.developpez.com/sources/
    2. Lors du post, n'oubliez pas, si besoin les balises CODE => voir ici pour l'utilisation
    3. N'oubliez pas le
    4. N'oubliez pas le si la réponse vous a été utile !

  3. #3
    Nouveau membre du Club
    Homme Profil pro
    retraite
    Inscrit en
    Décembre 2012
    Messages
    38
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : retraite
    Secteur : Transports

    Informations forums :
    Inscription : Décembre 2012
    Messages : 38
    Points : 38
    Points
    38
    Par défaut
    Bonjour à toutes et à tous,


    le code fonctionne au lancement normal mais se met en BOUCLE au pas à pas (F8).
    Dés que le programme à effectué une boucle il faut quitter excel pour pouvoir le relancer sans problème sinon il copie indéfiniment le texte sur des documents WORD.
    Incompréhensible
    Merci d'avoir consulté cette question très brouillonne.


    Première MACRO (au pas à pas avec F8 après exécution de la ligne 33 la boucle s'installe et on repart de la ligne 1)

    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
    Sub Excel_Word()
     
    Dim oWdApp As Word.Application
    Dim oWdDoc As Word.Document
    'Lancer une instance Word
    Set oWdApp = CreateObject("Word.Application")
     
    'Ouvrir un nouveau document
    Set oWdDoc = oWdApp.Documents.Add
    'Rendre Word visible
    oWdApp.Visible = True
     
      If oWdApp.Selection.PageSetup.Orientation = wdOrientPortrait Then
        oWdApp.Selection.PageSetup.Orientation = wdOrientLandscape
      Else
        oWdApp.Selection.PageSetup.Orientation = wdOrientPortrait
      End If
      Sheets("MSG TL").Select
    'Détermine la plage contenant des valeurs
    ld = [MSG_TL].Find("*", LookIn:=xlValues, _
        SearchOrder:=xlByRows, SearchDirection:=xlNext).Row
    cd = [MSG_TL].Find("*", LookIn:=xlValues, _
        SearchOrder:=xlByColumns, SearchDirection:=xlNext).Column
    LF = [MSG_TL].Find("*", LookIn:=xlValues, _
        SearchOrder:=xlByRows, SearchDirection:=xlPrevious).Row
    cf = [MSG_TL].Find("*", LookIn:=xlValues, _
        SearchOrder:=xlByColumns, SearchDirection:=xlPrevious).Column
     
    'Copier une plage depuis Excel
    ActiveSheet.Range(Cells(ld, cd), Cells(LF, cf)).Copy
     
    'Coller la plage dans Word
    oWdApp.Selection.Paste
    'oWdApp.ActiveWindow.ActivePane.VerticalPercentScrolled = 0
    'oWdApp.Selection.Tables(1).AutoFitBehavior AutoFitWindow
     
    Application.CutCopyMode = False
     
    End Sub

    Deuxième MACRO (au pas à pas avec F8 après exécution de la ligne 22 la boucle s'installe et on repart de la ligne 1)


    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
    Sub Excel_Word02()
     
    Dim oWdApp As Word.Application 'Object '
    Dim oWdDoc As Word.Document 'Object '
     
    'Lancer une instance Word
    Set oWdApp = CreateObject("Word.Application")
     
    'Ouvrir un nouveau document
    Set oWdDoc = oWdApp.Documents.Add
     
    'Rendre Word visible
    oWdApp.Visible = True
     
     
      Sheets("MSG TL").Select
     
    'Copier une plage depuis Excel
    ActiveSheet.Range("MSG_TL").Copy
     
    'Coller la plage dans Word
    oWdApp.Selection.Paste
    oWdDoc.Tables(1).AutoFitBehavior wdAutoFitWindow
     
    Application.CutCopyMode = False
     
    End Sub

    Troisième MACRO (au pas à pas avec F8 après exécution de la ligne 30 la boucle s'installe et on repart de la ligne 1)

    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 Passage_Excel_Word()
     Dim AppWord As New Word.Application
     Dim DocWord As New Word.Document
    ' Il faut créer un nouveau document Word dans l'application Word
     With AppWord
       .Visible = True
      Set DocWord = .Documents.Add
       .Activate
     End With
    'Dans Word on ajoute une ligne de titre avec une mise en forme
     With AppWord.Selection
       .TypeText Text:="Chiffre d'affaire 2003"
       .HomeKey Unit:=wdLine
       .EndKey Unit:=wdLine, Extend:=wdExtend
      .ParagraphFormat.Alignment = wdAlignParagraphCenter
       .Font.Size = 18
       With .Font
       .Name = "Arial"
       .Size = 16
       .Bold = True
       End With
    'Copier le tableau Excel dans le presse papier
      Sheets("MSG TL").Select
    ActiveSheet.Range("MSG_TL").Copy
     
      ' Coller le tableau dans Word avec liaison
      'DocWord.Selection.Paste
     .EndKey Unit:=wdLine
      .TypeParagraph
      .PasteSpecial Link:=True, DataType:=wdPasteOLEObject, Placement:=wdInLine, DisplayAsIcon:=False
    'Copier le graphique Excel dans le presse papier
     ' ActiveSheet.ChartObjects(1).Activate
      'ActiveChart.ChartArea.Select
     'ActiveChart.ChartArea.Copy
    'Coller le graphique dans Word
      ' .TypeParagraph
       '.Paste
     End With
    'Enregistrer le document Word
     With DocWord
      .SaveAs ThisWorkbook.Path & "\ca_2003.doc", Allowsubstitutions:=True
    'Dans Word Aperçu avant impression du résultat
        '.PrintPreview
    'Réinitialiser l'objet
      Set AppWord = Nothing
     End With
    End Sub
    Quatrième MACRO (au pas à pas avec F8 après exécution de la ligne 24 la boucle s'installe et on repart de la ligne 1)

    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
    Sub EnvoyerTableauxExcelVersWord_V02()
    'necessite d'activer la reference Microsoft Word xx.x Object Library
    Dim DocWord As Word.Document
    Dim AppWord As Word.Application
    'Dim DebMSG As String
    Dim FinMSG As String
    Dim Plage As String
     
    Application.ScreenUpdating = False
    Application.EnableEvents = False
     
     
     Sheets("MSG TL").Select
     
    'DebMSG = [E13].Select
    FinMSG = "E" & Range("E600").End(xlUp).Row
     'DernLigne = Range("A" & Rows.Count).End(xlUp).Row
    Plage = "E13" & ":" & FinMSG
    Set AppWord = New Word.Application
    AppWord.Visible = True
    Set DocWord = AppWord.Documents.Add
    Range(Plage).Copy
     
    AppWord.Selection.Paste
     
     
    Application.CutCopyMode = False
     
    DocWord.Tables(1).AutoFitBehavior wdAutoFitWindow
     Set AppWord = Nothing
     
    Application.ScreenUpdating = True
    Application.EnableEvents = True
     
     
    End Sub

  4. #4
    Expert éminent sénior
    Avatar de Marc-L
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2013
    Messages
    9 468
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2013
    Messages : 9 468
    Points : 18 677
    Points
    18 677
    Par défaut

    Bonjour,

    en général travailler avec Selection est source d'erreur, surtout quand l'objet n'est même pas actif ‼

    Avant chaque ligne provoquant le souci, tenter ceci : AppActivate AppWord.Caption

    Sinon exposer le problème dans le bon forum, vu que cela concerne Word !

    __________________________________________________________________________________________

    Merci de cliquer sur pour chaque message ayant aidé puis sur pour clore cette discussion …
    C'est parce que la vitesse de la lumière est plus rapide que celle du son que tant de gens paressent brillants avant d'avoir l'air con ! (Thomas Boishardy)

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

Discussions similaires

  1. REGEXP_SUBSTR qui mouline sans raison apparente
    Par eparesys dans le forum SQL
    Réponses: 0
    Dernier message: 03/08/2010, 19h20
  2. RuntimeException qui apparait sans raison apparente
    Par m_piou dans le forum Eclipse Java
    Réponses: 0
    Dernier message: 12/09/2008, 17h04
  3. Problème actionscript qui boucle
    Par baleiney dans le forum Flash
    Réponses: 1
    Dernier message: 26/03/2007, 07h44
  4. Réponses: 2
    Dernier message: 17/01/2007, 19h23
  5. build.xml qui plante sans raison
    Par marc olivier dans le forum EDI et Outils pour Java
    Réponses: 9
    Dernier message: 17/05/2006, 18h48

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