× Aidez la recherche contre le COVID-19 avec votre ordi ! Rejoignez l'équipe PC Astuces Folding@home
 > Tous les forums > Forum Bureautique
 Word VBA conditionner une macro à des zones de formulaire non videsSujet résolu
Ajouter un message à la discussion
Page : [1] 
Page 1 sur 1
deb56
  Posté le 23/03/2016 @ 19:40 
Aller en bas de la page 
Petit astucien

Bonjour à tous.

Dans un formulaire, je voudrais conditionner l'enregistrement du document au renseignement effectif de 2 zones, l'identité du sujet et la date, pour construire le nom du document à partir de ces 2 éléments. J'ai écrit ceci dans VBEditor:

" Selection.GoTo What:=wdGoToBookmark, Name:="Texte8"

If Selection.Text = "" Then

msgbox prompt:="Vous ne pouvez pas enregistrer ce document" & vbCr _

& "qui n'a pas de nom de Patient!", Title:="ATTENTION!"

GoTo 0

End If

patient = Selection.Text

Selection.GoTo What:=wdGoToBookmark, Name:="date"

If Selection.Text = "" Then

msgbox prompt:="Vous ne pouvez pas enregistrer ce document" & vbCr _

& "qui n'a pas de date!", Title:="ATTENTION!"

GoTo 0

End If

datedoc = Selection.Text

fichier = patient & datedoc "

Mais ça ne fonctionne pas. La condition n'est pas respectée et j'arrive donc à avoir des fichiers " _ .doc". Bof!

Si quelqu'un peut me donner la bonne formule, ce sera formidable. Merci d'avance.

Cordialement. deb56

Publicité
deb56
 Posté le 11/04/2016 à 23:12 
Aller en bas de la page Revenir au message précédent Revenir en haut de la page
Petit astucien

Bonsoir à tous.

Je relance la demande. J'ai simplifié la commande VBA comme ci-dessous et, comme avant, quand je la teste, le survol à la souris me dit bien ce qui est lu dans les zones de formulaire concernées, mais, quand elles sont vides(" "), la commande ne va quand même pas à GoTo 0. Je sèche. Si quelqu'un a une idée, elle est la bienvenue.

Merci d'avance. deb56

Dim patient As String, datedoc As String

Dim nomfichier As String

Dim chemin1 As String

patient = ActiveDocument.Bookmarks("Texte8").Range.Text

If patient = "" Then GoTo 0

datedoc = ActiveDocument.Bookmarks("Date").Range.Text

If datedoc = "" Then GoTo 0

nomfichier = patient & "_" & datedoc 'etc etc, le reste fonctionne bien.

m@rina
 Posté le 12/04/2016 à 04:51 
Aller en bas de la page Revenir au message précédent Revenir en haut de la page
Astucienne

Bonsoir,

Tu parles de zones de formulaire, je suppose qu'il s'agit donc des champs de formulaire et non des contrôles de contenu.

Si tu observes ces champs, tu remarqueras qu'ils ne sont jamais vides puisqu'ils présentent automatiquement quelques petits °°°°°.
Ton code serait OK s'il s'agissait de signets ordinaires, mais pas avec des champs de formulaire.

Essaie plutôt ceci :

Sub test()

Dim patient As String, datedoc As String
Dim nomfichier As String

patient = ActiveDocument.FormFields("Texte1").Result
datedoc = ActiveDocument.FormFields("Texte2").Result

If patient = "" Or datedoc = "" Then GoTo fin
nomfichier = patient & "_" & datedoc

'etc. etc.

Exit Sub

fin:
MsgBox "Vous ne pouvez pas enregistrer ce document" & vbCr _
& "qui n'a pas de nom de Patient!", Title:="ATTENTION!"

End Sub

Par ailleurs, je ne sais pas si l'histoire de la date est une excellente idée. Si la date contient des / (12/04/2016), l'enregistrement ne pourra pas se faire avec ce nom. Ou alors il faut prévoir dans la macro de supprimer les /.



Modifié par m@rina le 12/04/2016 04:53
deb56
 Posté le 12/04/2016 à 10:39 
Aller en bas de la page Revenir au message précédent Revenir en haut de la page
Petit astucien

Bonjour, m@rina. Et merci de ta réponse.

Bien reçu tes explications sur le contenu des champs de formulaires. Je vais essayer ça. Mais ça va devoir attendre demain. Je te tiens au courant.

Pour le champ date, tu as certainement raison. Mais je suis méfiant: j'ai donc imposé le format aaaa-mm-jj dans le champ, même si l'on tape jj/mm/aaaa. Et ça fonctionne.

Encore merci de ton aide. deb56

deb56
 Posté le 12/04/2016 à 23:07 
Aller en bas de la page Revenir au message précédent Revenir en haut de la page
Petit astucien

Bonsoir, m@rina.

Ça fonctionne impeccablement. Le seul truc est que mon VBA ne veut pas de l'association if ... or if ... then ... Mais comme ça marche très bien séparément, ce n'est pas grave. Peut-être est-ce à cause de ma version d'Office (2003)?

J'ai gardé aussi goto 0 et goto 1 qui fonctionnent et ça me permet de court-circuiter le message "Attention!" si les champs sont renseignés. Mais, bien sûr, j'aurais pu les appeler respectivement fin1 et fin2 ou n'importe quoi d'autre.

Quoiqu'il en soit, me voici bien dépanné et juste un peu moins ignare qu'avant. Encore merci de ton aide tout-à-fait efficace. deb56

m@rina
 Posté le 13/04/2016 à 16:47 
Aller en bas de la page Revenir au message précédent Revenir en haut de la page
Astucienne

Bonjour

Contente que ça fonctionne. Pour le Or, ça marche aussi avec 2003, mais ce n'est pas comme tu as mis, il ne faut pas de deuxième IF. Reprends mon code.

deb56
 Posté le 13/04/2016 à 18:56 
Aller en bas de la page Revenir au message précédent Revenir en haut de la page
Petit astucien

Bien reçu. Toutes mes excuses pour cette lecture trop rapide.

Encore merci. deb56

Page : [1] 
Page 1 sur 1

Vous devez être connecté pour poster des messages. Cliquez ici pour vous identifier.

Vous n'avez pas de compte ? Créez-en un gratuitement !


Les bons plans du moment PC Astuces

Tous les Bons Plans
32,63 €Mallette à outils Popoman (97 pièces) à 32,63 € avec le code U4T9FU5X
Valable jusqu'au 28 Septembre

Amazon fait une promotion sur la mallette à outils Popoman (97 pièces) qui passe à 32,63 € au lieu 47 €.  Cette malette contient tous les outils nécessaires pour les réparations à la maison. Pour profiter de l'offre, passez la souris sur le bandeau Message promotionnel sur la page du produit et cliquez sur Appliquer à côté des 32% de remise. Vous pouvez aussi utiliser le code promo U4T9FU5X sur la page de paiement.


> Voir l'offre
53,92 €Carte mémoire microSDXC UHS-I SanDisk Ultra 400 Go à 53,92 € livrée
Valable jusqu'au 28 Septembre

Amazon Allemagne propose la carte mémoire microSDHC UHS-I SanDisk Ultra 400 Go à 49,42 € (avec la TVA ajustée). Comptez 4,50 € pour la livraison en France, soit un total de 53,92 € livrée en France. On la trouve trouve ailleurs à partir de 80 €. Cette carte mémoire offre des vitesses jusqu'à 100 Mo/s et est idéale pour les téléphones, caméras et appareils photo HD. Elle est certifiée GoPro, Nintendo Switch et est accompagnée d'un adaptateur SD.

Vous pouvez utiliser votre compte Amazon France sur Amazon Allemagne et il n'y a pas de douanes. Si vous êtes perdu en allemand, vous pouvez traduire le site en anglais.


> Voir l'offre
21,91 €Souris sans fil Logitech M280 à 21,91 €
Valable jusqu'au 27 Septembre

Amazon fait une petite promotion sur la souris sans fil Logitech M280 qui passe à 21,91 €. On la trouve ailleurs à partir de 30 €. Sa forme profilée est adaptée aux droitiers. Son autonomie est de 18 mois (pile AA que vous pourrez remplacer).


> Voir l'offre

Sujets relatifs
Word - Zones protégées dans formulaire
[Word//Acces via formulaire]
macro afficher masquer lignes tableau dans word 2010
Macro pour word 2013
Création d'une macro dans Word
comment vider les champs d'un formulaire Word?
[Macro Word]Erreur 9105
Extraire des information depuis pdf vers un formulaire word automatiquement
Dupliquer formulaire - word
Word - Macro - Recherche
Plus de sujets relatifs à Word VBA conditionner une macro à des zones de formulaire non vides
 > Tous les forums > Forum Bureautique