[vba] Automatiser Word à partir d'Excel [Résolu]

Messages postés
29
Date d'inscription
vendredi 16 mai 2008
Dernière intervention
15 mars 2014
- - Dernière réponse : ucfoutu
Messages postés
18039
Date d'inscription
lundi 7 décembre 2009
Statut
Contributeur
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
Afficher la suite 

Votre réponse

9 réponses

Meilleure réponse
Messages postés
18039
Date d'inscription
lundi 7 décembre 2009
Statut
Contributeur
Dernière intervention
11 avril 2018
3
Merci
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

Dire « Merci » 3

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources 96 internautes nous ont dit merci ce mois-ci

Commenter la réponse de ucfoutu
Messages postés
18039
Date d'inscription
lundi 7 décembre 2009
Statut
Contributeur
Dernière intervention
11 avril 2018
0
Merci
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
Commenter la réponse de ucfoutu
Messages postés
29
Date d'inscription
vendredi 16 mai 2008
Dernière intervention
15 mars 2014
0
Merci
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
Commenter la réponse de gerardmireille
Messages postés
18039
Date d'inscription
lundi 7 décembre 2009
Statut
Contributeur
Dernière intervention
11 avril 2018
0
Merci
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
Commenter la réponse de ucfoutu
Messages postés
29
Date d'inscription
vendredi 16 mai 2008
Dernière intervention
15 mars 2014
0
Merci
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
Commenter la réponse de gerardmireille
Messages postés
18039
Date d'inscription
lundi 7 décembre 2009
Statut
Contributeur
Dernière intervention
11 avril 2018
0
Merci
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
Commenter la réponse de ucfoutu
Messages postés
29
Date d'inscription
vendredi 16 mai 2008
Dernière intervention
15 mars 2014
0
Merci
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+
Commenter la réponse de gerardmireille
Messages postés
18039
Date d'inscription
lundi 7 décembre 2009
Statut
Contributeur
Dernière intervention
11 avril 2018
0
Merci
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
Commenter la réponse de ucfoutu
Messages postés
29
Date d'inscription
vendredi 16 mai 2008
Dernière intervention
15 mars 2014
0
Merci
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
Commenter la réponse de gerardmireille

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.