Bonjour a tous,
J'aimerai importer des valeurs d'une feuille Excel dans des signets Word pour cela j'ai decoupé mon code en 3 parties car mon document Word l'est aussi.
Je me retrouve a tester mes 2 parties les plus simples mais elles ne fonctionnent pas en raison d'une mauvaise attribution de la valeur de ma variable NumeroDerniereLigneCelluleNonVide (nomme identique dans les 2 sub mais j'ai teste independamment les 2 sub pour savoir si le rendu etait tel que je le voulais).
J'ai respectivement dans mon 1er et 2eme sub defini cette variable tel que :
NumeroDerniereLigneCelluleNonVide = Range("A300").End(xlUp).Row
NumeroDerniereLigneCelluleNonVide = Range("C300").End(xlUp).Row
Afin qu'elle me renvoie le numero de la ligne contenant la derniere cellule non vide des colonnes A et C en partant a chaque fois de la ligne 300 et sans prendre en compte les resultats "" des formules (=SIERREUR(SI(B33<>"";SI(B32<>"";A32+1;SI(B31<>"";A31+1;""));"");"") et =SI(_xlfn.NUMBERVALUE(Feuil1!N15;".")<=0;"";Feuil1!Q15) ) contenus respectivement dans chaque cellule A et C (de la ligne 1 a 500).
Cependant dans le 1er cas elle me renvoie 20 alors que (code ci-joint) ma boucle For debute a 21 ce qui implique que ma boucle est saute mais le code tourne sans que les signets de la partie Findings soient remplaces par la valeur voulu ...
Et dans le 2eme cas elle me renvoie 520 (encore plus etrange) ... et un message d'erreur "Overflow" apparait
Je ne comprends pas alors que dans mon tableau Excel feuille "Finding report" la derniere cellule non vide pour les colonnes A et C est 41.
Cela est surement du aux resultats qui composent ces cellules A et C, la methode Find n'est pas efficace je ne vois pas comment realiser autrement ou ou est mon erreur.
Si vous avez une idee je suis preneur, merci d'avance
Ci-joint le code de mon 1er sub (les 2 se ressemblent) :
J'aimerai importer des valeurs d'une feuille Excel dans des signets Word pour cela j'ai decoupé mon code en 3 parties car mon document Word l'est aussi.
Je me retrouve a tester mes 2 parties les plus simples mais elles ne fonctionnent pas en raison d'une mauvaise attribution de la valeur de ma variable NumeroDerniereLigneCelluleNonVide (nomme identique dans les 2 sub mais j'ai teste independamment les 2 sub pour savoir si le rendu etait tel que je le voulais).
J'ai respectivement dans mon 1er et 2eme sub defini cette variable tel que :
NumeroDerniereLigneCelluleNonVide = Range("A300").End(xlUp).Row
NumeroDerniereLigneCelluleNonVide = Range("C300").End(xlUp).Row
Afin qu'elle me renvoie le numero de la ligne contenant la derniere cellule non vide des colonnes A et C en partant a chaque fois de la ligne 300 et sans prendre en compte les resultats "" des formules (=SIERREUR(SI(B33<>"";SI(B32<>"";A32+1;SI(B31<>"";A31+1;""));"");"") et =SI(_xlfn.NUMBERVALUE(Feuil1!N15;".")<=0;"";Feuil1!Q15) ) contenus respectivement dans chaque cellule A et C (de la ligne 1 a 500).
Cependant dans le 1er cas elle me renvoie 20 alors que (code ci-joint) ma boucle For debute a 21 ce qui implique que ma boucle est saute mais le code tourne sans que les signets de la partie Findings soient remplaces par la valeur voulu ...
Et dans le 2eme cas elle me renvoie 520 (encore plus etrange) ... et un message d'erreur "Overflow" apparait
Je ne comprends pas alors que dans mon tableau Excel feuille "Finding report" la derniere cellule non vide pour les colonnes A et C est 41.
Cela est surement du aux resultats qui composent ces cellules A et C, la methode Find n'est pas efficace je ne vois pas comment realiser autrement ou ou est mon erreur.
Si vous avez une idee je suis preneur, merci d'avance
Ci-joint le code de mon 1er sub (les 2 se ressemblent) :
VB:
Private Sub ConcatenerFindings()
Dim i, j, X, k As Byte
Dim NumeroDerniereLigneCelluleNonVide As Integer
With Sheets("Finding report")
j = 21
NumeroDerniereLigneCelluleNonVide = Range("A300").End(xlUp).Row
For j = 21 To NumeroDerniereLigneCelluleNonVide
If Cells(j, 1) <> "" Then
.Cells(j, 12) = .Cells(j, 1) & "" & .Cells(j, 2) & "" & .Cells(j, 3) & "" & .Cells(j, 6)
Else
.Cells(j, 12) = ""
End If
Next j
Dim WordApp As Word.Application
Dim WordDoc As Word.Document
Set WordApp = CreateObject("word.application") 'ouvre session word
Set WordDoc = WordApp.Documents.Open("C:\Users\Utilisateur\Desktop\SIN-ENG-P04-F02_maintenance_work_sheet_ANNEX Revision 1.docx")
i = 1
j = 21
Do While True
If Cells(j, 12) <> "" Then
WordDoc.Bookmarks("Signet" & i).Range.Text = Cells(j, 12)
i = i + 1
End If
j = j + 1
If j = 300 Or i = 12 Then
Exit Do
End If
Loop
End With
End Sub