> 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 participer à la discussion.
Cliquez ici pour vous identifier.

Vous n'avez pas de compte ? Créez-en un gratuitement !
Recevoir PC Astuces par e-mail


La Lettre quotidienne +226 000 inscrits
Avec l'actu, des logiciels, des applis, des astuces, des bons plans, ...

Les bonnes affaires
Une fois par semaine, un récap des meilleurs offres.

Les fonds d'écran
De jolies photos pour personnaliser votre bureau. Une fois par semaine.

Les nouveaux Bons Plans
Des notifications pour ne pas rater les bons plans publiés sur le site.

Les bons plans du moment PC Astuces

Tous les Bons Plans
104,99 €Nouvelle liseuse Amazon Kindle Paperwhite 6.8 pouces avec éclairage réglable à 104,99 €
Valable jusqu'au 20 Janvier

Amazon fait une promotion sur la toute dernière version de sa liseuse Kindle Paperwhite qui passe à 104,99 € au lieu de 139,99 €. 

Cette version est désormais doté d'un écran 6,8 pouces (6 pouces auparavant), de bords plus fins, d'un éclairage réglable (vous pouvez changer la teinte de l'écran d'une lumière blanche à un ambre chaud ou programmer quand changer la lumière) avec 17 Leds et d'une autonomie pouvant aller jusqu'à 10 semaines, et 20 % plus rapide pour tourner les pages. Avec une façade plane et un écran sans reflets de 300 ppp qui se lit comme une véritable page imprimée, même en plein soleil.

Elle est toujours résistante à l'eau (IPX8), afin que vous puissiez lire en toute tranquillité à la plage, au bord de la piscine ou dans le bain. Cette liseuse dispose du WiFi, d'un port de charge USB C et de 8 Go d'espace de stockage.


> Voir l'offre
19,30 €Sélection de jeux de société Unlock! en promotion (ex : Unlock! Exotic Adventures à 19,30 €)
Valable jusqu'au 19 Janvier

Amazon fait une promotion sur une sélection de jeux de société de la gamme Unlock! grâce à des coupons de réduction à activer sur les pages des produits. Unlock! est un jeu de cartes coopératif inspiré des escape rooms, ces salles où vous devez vous échappez en moins de 60 minutes ! L'application gratuite Unlock!, compatible avec les téléphones et tablettes Android et iOS, est nécessaire pour jouer. Elle permet d'obtenir des indices, de repérer des objets cachés, mais aussi d'entrer les codes découverts. Elle contribue également à l'ambiance avec ses musiques dédiées à chaque aventure, ses énigmes audio, ses terribles pénalités et son compte à rebours fatal ! Unlock ! vous permet de vivre cette expérience dans votre salon ! Réussirez-vous à résoudre les énigmes pour vous échapper ?


> Voir l'offre
15,97 €Carte mémoire SDXC SanDisk Extreme 64 Go à 15,97 €
Valable jusqu'au 21 Janvier

Fnac fait une promotion sur la carte mémoire SDXC SanDisk Extreme 64 Go à 15,97 €. Cette carte mémoire est certifiée classe 10 U3 et autorise des débits de 70 Mo/s en capture et 150 Mo/s en transfert.


> 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