[vba] Automatiser Word à partir d'Excel

Résolu
gerardmireille Messages postés 29 Date d'inscription vendredi 16 mai 2008 Statut Membre Dernière intervention 15 mars 2014 - 27 févr. 2012 à 22:31
ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 - 28 févr. 2012 à 22:31
Bonjour,
j'ai créé une macro pour générer un fichier word à partir d'une feuille Excel. je voudrais que le document word conserve les deux décimales du document Excel, ce qui n'est pas le cas après le transfert. Ci dessous un bout de mon code.

i = 29 '29ème ligne excel
Cell = 2
While Not IsEmpty(Cells(i, 3))
WordDoc.Tables(4).Columns(1).Cells(Cell).Range.Text = Range("C" & i)
'Incrémente la variable d'une unité afin de tester la cellule suivante.
i = i + 1
Cell = Cell + 1
Wend
Je sais qu'il faut déclarer un format pour le doc. Word du style # ###0,00 mais je n'arrive pas à l'insérer dans la macro.
Merci d'avance
Cordialement

9 réponses

ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 211
28 févr. 2012 à 22:31
Su réglé ===>> un clic sur le tag "réponse acceptée" pour libérer ce sujet.


____________________
Réponse exacte ? => "REPONSE ACCEPTEE" pour faciliter les recherches d'autres forumeurs.
Pas d'aide en ligne installée ? ==> ne comptez pas sur moi pour simplement vous dire ce qu'elle contient
3
ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 211
28 févr. 2012 à 07:33
Bonjour,
ton problème est probablement là, en ce qui concerne l'aspect format :
WordDoc.Tables(4).Columns(1).Cells(Cell).Range.Text = Range("C" & i)
VBA/Excel est "tolérant", certes, lorsque l'on ne spécifie aucune propriété ===>> il décide alors de "réparer" cet oubli en considérant qu'il s'agit de celle par défaut (la propriété Value).
La propriété Value concerne la valeur numérique et ne correspond pas forcément à ce qui, résultat d'un format, est affiché.
Ne jamais laisser VBA user de sa tolérance. Préciser systématiquement la propriété à utiliser est une sage habitude à Prendre.?
Une cellule, sous VBA, dispose de la propriété Value (en lecture/écriture) et de la propriété Text (en lecture seule).
Corrige et cela devrait aller

____________________
Réponse exacte ? => "REPONSE ACCEPTEE" pour faciliter les recherches d'autres forumeurs.
Pas d'aide en ligne installée ? ==> ne comptez pas sur moi pour simplement vous dire ce qu'elle contient
0
gerardmireille Messages postés 29 Date d'inscription vendredi 16 mai 2008 Statut Membre Dernière intervention 15 mars 2014
28 févr. 2012 à 14:30
Bonjour,
Merci pour ta réponse. Un peu novice pour ces problèmes un peu pointus j'ai un peu de mal à comprendre ce que tu veux me dire.
J'ai mis à l'ouverture de mon fichier :
Set WordDoc = WordApp.Documents.Open(ThisWorkbook.Path & "\Tps Travail par CT.doc", ReadOnly:=False)
Je pensais que ReadOnly:=False permettait d'avoir la propriété Value en lecture/écriture.
Peux tu m'aider à solutionner ce problème.
Merci d'avance
0
ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 211
28 févr. 2012 à 14:40
Hé ?
Que vient faire là-dedans (et encore moins avec ce dont je t'ai parlé) l'attribut ReadOnly de ton fichier( ?
Je crois que nous ne sommes pas sur la même planète !
Je te parle, moi, de la propriété (que tu n'as pas définie) de la cellule que tu lis : Elle n'a absolument rien à voir avec ton fichier !
Ouvre vite ton aide en ligne (aide VBA ! tu connais ?) sur les propriétés :
Value d'abord (elle est en lecture/écriture)
Text ensuite (elle est en lecture seule)
d'un Range !
Et je t'ai parlé de la nécessité de ne pas laisser VBA dans le flkou, à ce propos !
pour mémoire :
VBA/Excel est "tolérant", certes, lorsque l'on ne spécifie aucune propriété ===>> il décide alors de "réparer" cet oubli en considérant qu'il s'agit de celle par défaut (la propriété Value).
La propriété Value concerne la valeur numérique et ne correspond pas forcément à ce qui, résultat d'un format, est affiché.
Ne jamais laisser VBA user de sa tolérance. Préciser systématiquement la propriété à utiliser est une sage habitude à Prendre.?

C'est vraiment du chinois, tout ça, pour toi ?


____________________
Réponse exacte ? => "REPONSE ACCEPTEE" pour faciliter les recherches d'autres forumeurs.
Pas d'aide en ligne installée ? ==> ne comptez pas sur moi pour simplement vous dire ce qu'elle contient
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
gerardmireille Messages postés 29 Date d'inscription vendredi 16 mai 2008 Statut Membre Dernière intervention 15 mars 2014
28 févr. 2012 à 16:25
Re
Oui je vais t'avouer que tel que tu me l'explique c'est un peu tu chinois.
Cela fait un an que je mes suis mis à VBA/Excel sans jamais avoir pris de cours mais avec l'aide des forums et de quelques amis.
J'estime avoir pas trop mal progressé mais il me reste encore de grosses lacunes.
Je n'ai jamais véritablement fouillé dans l'aide qui reste pour moi un peu du chinois.
Je te demande simplement de m'aider en me donnant au moins un début de procédure.
Sinon laisse tomber j'essaierai de m'adresser ailleurs.
Merci quand même
Cordialement
0
ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 211
28 févr. 2012 à 16:29
Cela fait un an que je mes suis mis à VBA/Excel sans jamais avoir pris de cours mais avec l'aide des forums et de quelques amis.

Nous sommes donc à égalité. Tu as même un avantage sur moi : je n'ai reçu aucune aide (mais me suis concentré sur la lecture de l'aide VBA )
As-tu oui ou non, ouvert comme je te l'ai demandé ton aide VBA sur les deux propriétés que je t'ai signalées ?
Qu'y as-tu lu ? Qu'en as-tu déduit ?
Commence par ce geste. C'est du donnant donnant !


____________________
Réponse exacte ? => "REPONSE ACCEPTEE" pour faciliter les recherches d'autres forumeurs.
Pas d'aide en ligne installée ? ==> ne comptez pas sur moi pour simplement vous dire ce qu'elle contient
0
gerardmireille Messages postés 29 Date d'inscription vendredi 16 mai 2008 Statut Membre Dernière intervention 15 mars 2014
28 févr. 2012 à 17:15
J'obtempère....
J'en déduis que la propriété Text renvoie le texte sans mise en forme mais l'aide ne me dit pas ce que je dois faire pour le mettre en forme.
(ce qui ne semble pas être mon cas en ce moment) !!
A+
0
ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 211
28 févr. 2012 à 17:17
Ouais ...
Bon.
Je viens de l'ouvrir moi-même, cette propriété text dans l'aide VBA.
Elle est même assortie d'un exemple très simple et clair qui montre ce que retournent la propriété .Text et la propriété .Value (celle par défaut, par tolérance de VBA, lorsque non précisée - ce sur quoi j'ai voulu en vain appeler ton attention).
Regarde ce que fait ceci (exemple commenté), que je viens de faire pour toi :
Range("A1").NumberFormat = "0.00"
 Range("A1").Value = 1 / 3
 MsgBox "on va examiner ce que tu enverrais dans word dans ces 3 cas " & vbCrLf & _
 "voilà ce que tu as sans préciser de propriété (déconseillé car non précis & interprété par ""tolérance"" VBA comme .value) ===> " & Range("A1") & vbCrLf & _
 "et voilà (la même chose, donc) en précisant la propriété Value ===>> " & Range("A1").Value & vbCrLf & _
 "et voilà avec la propriété text (et tel qu'affiché en A1) ===>>>" & Range("A1").Text & vbCrLf & vbCrLf & _
 "est-ce maintenant suffisamment clair ?"

Et toi : qu'envoies-tu vers Word ? ===>> regarde ce que je t'en ai dit :
ton problème est probablement là, en ce qui concerne l'aspect format :
WordDoc.Tables(4).Columns(1).Cells(Cell).Range.Text = Range("C" & i)

où aucune propriété n'est précisée pour ton range("C" & i) ===>> donc propriété Value et non ce qui est affiché sur ta feuille !
Voilà ! un peu de soin apporté à ce que je t'avais dit et tu aurais corrigé seul.


____________________
Réponse exacte ? => "REPONSE ACCEPTEE" pour faciliter les recherches d'autres forumeurs.
Pas d'aide en ligne installée ? ==> ne comptez pas sur moi pour simplement vous dire ce qu'elle contient
0
gerardmireille Messages postés 29 Date d'inscription vendredi 16 mai 2008 Statut Membre Dernière intervention 15 mars 2014
28 févr. 2012 à 22:21
Bonsoir,

Merci pour tes exemples.
J'ai à peu près réussi à faire ce que je voulais mais j'ai encore beaucoup à apprendre sur le sujet.
Cordialement.
A+
« La connaissance est la seule chose qui s'accroit lorsqu'on la partage. »
de Sacha Boudjema
0
Rejoignez-nous