Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

plantage de Paste aléatoire

4 réponses
Avatar
daniel
Bonjour,
Après recherches sur le forum et tests en tout genre, je suis arrivé à faire
la macro suivante qui copie une ligne de chaque fichier word (il y en aura +
de 2000), vers une feuille excel en face du nom du fichier word.
Mais malheureusement, lors du "collage" des valeurs, très régulièrement ça
plante et de plus, de façon alétoire. J'ai fais plusieurs essais, ce ne sont
pas toujours les mêmes valeurs qui font planter.
Merci par avance pour vos éclaircissements ou solutions.
Bonne journée.

Sub ListerfichiersWORD()

Dim DocWord As Word.Document
Dim AppWord As Word.Application

ThisWorkbook.Sheets("exemple").Select
Range("b5", [b65000].End(xlUp)).Select
Range("B5").Activate

For Each c In Selection
FichierInfo = ActiveCell.Value

Set AppWord = New Word.Application
AppWord.ShowMe
AppWord.Visible = True

'Ouvre le document Word et effectue une copie des données
Set DocWord = AppWord.Documents.Open("C:\Boulot\LettreWORD\" &
FichierInfo, ReadOnly:=True)

With AppWord.Selection.Find
.Text = "agence "
.Forward = True
.MatchAllWordForms = False
End With

With AppWord
.Selection.Find.Execute

.Selection.MoveLeft Unit:=wdCharacter, Count:=1
.Selection.MoveDown Unit:=wdLine, Count:=1
.Selection.EndKey Unit:=wdLine, Extend:=wdExtend
.Selection.Copy
End With

'Fermeture de Word
AppWord.Application.Quit

' Copie des données dans Excel
ThisWorkbook.Worksheets("exemple").Select
ActiveCell.Select
ActiveCell.Offset(, 1).Select
******** c'est ici que ça plante de façon aléatoire *************
ActiveSheet.PasteSpecial Format:="Texte", Link:=False, DisplayAsIcon:= _
False
******** ici aussi ça plante de façon aléatoire *************
' ActiveSheet.Paste

Application.CutCopyMode = False

ActiveCell.Offset(1, -1).Select
Next c
End Sub

4 réponses

Avatar
daniel
Bonjour,
Bonjour,
Merci pour la réponse.
J'ai essayé de changer ActiveSheet par Selection, mais là XL me répond
"Erreur défini par l'application ou par l'objet"
Encore merci et bonne journée.
Daniel


"Pounet95" a écrit dans le message de news:
uw0wyG%
Bonjour,
A tout hasard car il m'est arrivé d'avoir quelquefois ce problème entre
copie exec à excel
Remplace pour la partie ci-dessous, ActiveSheet par Selection

******** c'est ici que ça plante de façon aléatoire *************
ActiveSheet.PasteSpecial Format:="Texte", Link:úlse, DisplayAsIcon:=
_
False

La deuxième syntaxe me semble correcte portant.
Peut-être un engorgement du presse-papier qu'il faudrait vider
éventuellement
après chaque copie par
application.cutcopymode = false

Sans garantie, mais sit-on jamais ?
Bonne journée
Pounet95

"daniel" a écrit dans le message de
news:
Bonjour,
Après recherches sur le forum et tests en tout genre, je suis arrivé à
faire la macro suivante qui copie une ligne de chaque fichier word (il y
en aura + de 2000), vers une feuille excel en face du nom du fichier
word.
Mais malheureusement, lors du "collage" des valeurs, très régulièrement
ça plante et de plus, de façon alétoire. J'ai fais plusieurs essais, ce
ne sont pas toujours les mêmes valeurs qui font planter.
Merci par avance pour vos éclaircissements ou solutions.
Bonne journée.

Sub ListerfichiersWORD()

Dim DocWord As Word.Document
Dim AppWord As Word.Application

ThisWorkbook.Sheets("exemple").Select
Range("b5", [b65000].End(xlUp)).Select
Range("B5").Activate

For Each c In Selection
FichierInfo = ActiveCell.Value

Set AppWord = New Word.Application
AppWord.ShowMe
AppWord.Visible = True

'Ouvre le document Word et effectue une copie des données
Set DocWord = AppWord.Documents.Open("C:BoulotLettreWORD" &
FichierInfo, ReadOnly:=True)

With AppWord.Selection.Find
.Text = "agence "
.Forward = True
.MatchAllWordForms = False
End With

With AppWord
.Selection.Find.Execute

.Selection.MoveLeft Unit:=wdCharacter, Count:=1
.Selection.MoveDown Unit:=wdLine, Count:=1
.Selection.EndKey Unit:=wdLine, Extend:=wdExtend
.Selection.Copy
End With

'Fermeture de Word
AppWord.Application.Quit

' Copie des données dans Excel
ThisWorkbook.Worksheets("exemple").Select
ActiveCell.Select
ActiveCell.Offset(, 1).Select
******** c'est ici que ça plante de façon aléatoire *************
ActiveSheet.PasteSpecial Format:="Texte", Link:úlse, DisplayAsIcon:=
_
False
******** ici aussi ça plante de façon aléatoire *************
' ActiveSheet.Paste

Application.CutCopyMode = False

ActiveCell.Offset(1, -1).Select
Next c
End Sub







Avatar
daniel
Bonjour,
J'ai changé la fermeture de word pour la placer à la fin et maintenant plus
de problème. :-)).

'Fermeture de Word
AppWord.Application.Quit

Encore merci pour votre aide et bonne journée.
Daniel

"daniel" a écrit dans le message de news:

Bonjour,
Après recherches sur le forum et tests en tout genre, je suis arrivé à
faire la macro suivante qui copie une ligne de chaque fichier word (il y
en aura + de 2000), vers une feuille excel en face du nom du fichier word.
Mais malheureusement, lors du "collage" des valeurs, très régulièrement ça
plante et de plus, de façon alétoire. J'ai fais plusieurs essais, ce ne
sont pas toujours les mêmes valeurs qui font planter.
Merci par avance pour vos éclaircissements ou solutions.
Bonne journée.

Sub ListerfichiersWORD()

Dim DocWord As Word.Document
Dim AppWord As Word.Application

ThisWorkbook.Sheets("exemple").Select
Range("b5", [b65000].End(xlUp)).Select
Range("B5").Activate

For Each c In Selection
FichierInfo = ActiveCell.Value

Set AppWord = New Word.Application
AppWord.ShowMe
AppWord.Visible = True

'Ouvre le document Word et effectue une copie des données
Set DocWord = AppWord.Documents.Open("C:BoulotLettreWORD" &
FichierInfo, ReadOnly:=True)

With AppWord.Selection.Find
.Text = "agence "
.Forward = True
.MatchAllWordForms = False
End With

With AppWord
.Selection.Find.Execute

.Selection.MoveLeft Unit:=wdCharacter, Count:=1
.Selection.MoveDown Unit:=wdLine, Count:=1
.Selection.EndKey Unit:=wdLine, Extend:=wdExtend
.Selection.Copy
End With

'Fermeture de Word
AppWord.Application.Quit

' Copie des données dans Excel
ThisWorkbook.Worksheets("exemple").Select
ActiveCell.Select
ActiveCell.Offset(, 1).Select
******** c'est ici que ça plante de façon aléatoire *************
ActiveSheet.PasteSpecial Format:="Texte", Link:úlse, DisplayAsIcon:=
_
False
******** ici aussi ça plante de façon aléatoire *************
' ActiveSheet.Paste

Application.CutCopyMode = False

ActiveCell.Offset(1, -1).Select
Next c
End Sub




Avatar
Mishell
Tu peux peut-être accélérer le code ainsi :

Sub ListerfichiersWORD()

Dim DocWord As Word.Document
Dim AppWord As Word.Application

ThisWorkbook.Sheets("exemple").Select
Range("b5", [b65000].End(xlUp)).Select
Range("B5").Activate

Set AppWord = New Word.Application

AppWord.ShowMe
AppWord.Visible = True

For Each c In Selection
FichierInfo = c.Value

'Ouvre le document Word et effectue une copie des données
fichier = "C:LettreWORD" & FichierInfo

Set DocWord = AppWord.Documents.Open(fichier, ReadOnly:=True)

With AppWord.Selection.Find
.Text = "agence "
.Forward = True
.MatchAllWordForms = False
End With

With AppWord
.Selection.Find.Execute

.Selection.MoveLeft Unit:=wdCharacter, Count:=1
.Selection.MoveDown Unit:=wdLine, Count:=1
.Selection.EndKey Unit:=wdLine, Extend:=wdExtend
.Selection.Copy
End With


c.Offset(, 1).Select


ActiveSheet.PasteSpecial Format:="Text", Link:úlse, DisplayAsIcon:úlse

Application.CutCopyMode = False


DocWord.Close

Next c

AppWord.Application.Quit

End Sub


"daniel" wrote in message
news:uqz%23FW%
Bonjour,
J'ai changé la fermeture de word pour la placer à la fin et maintenant
plus de problème. :-)).

'Fermeture de Word
AppWord.Application.Quit

Encore merci pour votre aide et bonne journée.
Daniel

"daniel" a écrit dans le message de news:

Bonjour,
Après recherches sur le forum et tests en tout genre, je suis arrivé à
faire la macro suivante qui copie une ligne de chaque fichier word (il y
en aura + de 2000), vers une feuille excel en face du nom du fichier
word.
Mais malheureusement, lors du "collage" des valeurs, très régulièrement
ça plante et de plus, de façon alétoire. J'ai fais plusieurs essais, ce
ne sont pas toujours les mêmes valeurs qui font planter.
Merci par avance pour vos éclaircissements ou solutions.
Bonne journée.

Sub ListerfichiersWORD()

Dim DocWord As Word.Document
Dim AppWord As Word.Application

ThisWorkbook.Sheets("exemple").Select
Range("b5", [b65000].End(xlUp)).Select
Range("B5").Activate

For Each c In Selection
FichierInfo = ActiveCell.Value

Set AppWord = New Word.Application
AppWord.ShowMe
AppWord.Visible = True

'Ouvre le document Word et effectue une copie des données
Set DocWord = AppWord.Documents.Open("C:BoulotLettreWORD" &
FichierInfo, ReadOnly:=True)

With AppWord.Selection.Find
.Text = "agence "
.Forward = True
.MatchAllWordForms = False
End With

With AppWord
.Selection.Find.Execute

.Selection.MoveLeft Unit:=wdCharacter, Count:=1
.Selection.MoveDown Unit:=wdLine, Count:=1
.Selection.EndKey Unit:=wdLine, Extend:=wdExtend
.Selection.Copy
End With

'Fermeture de Word
AppWord.Application.Quit

' Copie des données dans Excel
ThisWorkbook.Worksheets("exemple").Select
ActiveCell.Select
ActiveCell.Offset(, 1).Select
******** c'est ici que ça plante de façon aléatoire *************
ActiveSheet.PasteSpecial Format:="Texte", Link:úlse, DisplayAsIcon:=
_
False
******** ici aussi ça plante de façon aléatoire *************
' ActiveSheet.Paste

Application.CutCopyMode = False

ActiveCell.Offset(1, -1).Select
Next c
End Sub








Avatar
daniel
Bonjour,
Merci pour le code.
Je vais tester ça rapidement.
Bonne journée.
Daniel

"Mishell" a écrit dans le message de news:
%
Tu peux peut-être accélérer le code ainsi :

Sub ListerfichiersWORD()

Dim DocWord As Word.Document
Dim AppWord As Word.Application

ThisWorkbook.Sheets("exemple").Select
Range("b5", [b65000].End(xlUp)).Select
Range("B5").Activate

Set AppWord = New Word.Application

AppWord.ShowMe
AppWord.Visible = True

For Each c In Selection
FichierInfo = c.Value

'Ouvre le document Word et effectue une copie des données
fichier = "C:LettreWORD" & FichierInfo

Set DocWord = AppWord.Documents.Open(fichier, ReadOnly:=True)

With AppWord.Selection.Find
.Text = "agence "
.Forward = True
.MatchAllWordForms = False
End With

With AppWord
.Selection.Find.Execute

.Selection.MoveLeft Unit:=wdCharacter, Count:=1
.Selection.MoveDown Unit:=wdLine, Count:=1
.Selection.EndKey Unit:=wdLine, Extend:=wdExtend
.Selection.Copy
End With


c.Offset(, 1).Select


ActiveSheet.PasteSpecial Format:="Text", Link:úlse, DisplayAsIcon:úlse

Application.CutCopyMode = False


DocWord.Close

Next c

AppWord.Application.Quit

End Sub


"daniel" wrote in message
news:uqz%23FW%
Bonjour,
J'ai changé la fermeture de word pour la placer à la fin et maintenant
plus de problème. :-)).

'Fermeture de Word
AppWord.Application.Quit

Encore merci pour votre aide et bonne journée.
Daniel

"daniel" a écrit dans le message de news:

Bonjour,
Après recherches sur le forum et tests en tout genre, je suis arrivé à
faire la macro suivante qui copie une ligne de chaque fichier word (il y
en aura + de 2000), vers une feuille excel en face du nom du fichier
word.
Mais malheureusement, lors du "collage" des valeurs, très régulièrement
ça plante et de plus, de façon alétoire. J'ai fais plusieurs essais, ce
ne sont pas toujours les mêmes valeurs qui font planter.
Merci par avance pour vos éclaircissements ou solutions.
Bonne journée.

Sub ListerfichiersWORD()

Dim DocWord As Word.Document
Dim AppWord As Word.Application

ThisWorkbook.Sheets("exemple").Select
Range("b5", [b65000].End(xlUp)).Select
Range("B5").Activate

For Each c In Selection
FichierInfo = ActiveCell.Value

Set AppWord = New Word.Application
AppWord.ShowMe
AppWord.Visible = True

'Ouvre le document Word et effectue une copie des données
Set DocWord = AppWord.Documents.Open("C:BoulotLettreWORD" &
FichierInfo, ReadOnly:=True)

With AppWord.Selection.Find
.Text = "agence "
.Forward = True
.MatchAllWordForms = False
End With

With AppWord
.Selection.Find.Execute

.Selection.MoveLeft Unit:=wdCharacter, Count:=1
.Selection.MoveDown Unit:=wdLine, Count:=1
.Selection.EndKey Unit:=wdLine, Extend:=wdExtend
.Selection.Copy
End With

'Fermeture de Word
AppWord.Application.Quit

' Copie des données dans Excel
ThisWorkbook.Worksheets("exemple").Select
ActiveCell.Select
ActiveCell.Offset(, 1).Select
******** c'est ici que ça plante de façon aléatoire *************
ActiveSheet.PasteSpecial Format:="Texte", Link:úlse,
DisplayAsIcon:= _
False
******** ici aussi ça plante de façon aléatoire *************
' ActiveSheet.Paste

Application.CutCopyMode = False

ActiveCell.Offset(1, -1).Select
Next c
End Sub