> 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
99,99 €SSD externe NVMe Crucial X8 1 To à 99,99 €
Valable jusqu'au 22 Mai

Amazon fait une promotion sur le SSD externe NVMe Crucial X8 1 To qui passe à 99,99 € alors qu'on le trouve ailleurs à partir de 135 €. Il offre des vitesses de lecture jusqu'à 1050 Mo/s et résiste aux chutes jusqu'à 2 mètres, aux chocs et aux températures extrêmes. Il est fourni avec des connecteurs USB C-3.2 et USB-A (USB classique).


> Voir l'offre
190,75 €Ecouteurs sans fil Apple AirPods Pro avec réduction active du bruit à 190,75 € livrés
Valable jusqu'au 23 Mai

Amazon Italie actuellement les écouteurs sans fil Apple AirPods Pro (2021) avec boîtier de charge sans fil à 185,90 € (avec la TVA ajustée). Comptez 4,85 € pour la livraison en France soit un total de à 190,75 € livrés. On les trouve ailleurs à 239 €.

 Les AirPods Pro signés Apple offrent une expérience audio supérieure en combinant Bluetooth 5.0, confort permanent, technologie de réduction de bruit active et une belle autonomie de 24 heures. Accompagnés d'un boîtier de charge sans fil, ils s'inviteront idéalement dans votre quotidien.


> Voir l'offre
51,99 €Souffleur sans fil Bosch Professionnal 18V GBL-120 à 51,99 €
Valable jusqu'au 22 Mai

Amazon fait une promotion sur le souffleur sans fil Bosch Professionnal 18V GBL-120 qui passe à 51,99 € au lieu de 77 €. Il est fourni ici sans batterie et est compatible avec le système 18V de Bosch.

Le souffleur sans-fil GBL 18V-120 Professional de la catégorie 18 V permet de nettoyer en un tour de main. La vitesse de soufflage maximale de 270 km/h garantit de bons résultats pour le nettoyage de surfaces. Le souffleur est utilisable pour le nettoyage de postes de travail, le soufflage de trous de perçage et de multiples autres applications comme le soufflage d'une terasse. Sa forme compacte et bien équilibrée assure une bonne maniabilité et une maniement facile. Il est compatible avec toutes les batteries et tous les chargeurs 18 V de Bosch Professional (Professional 18V System). Le GBL 18V-120 Professional offre le choix entre deux vitesses selon les besoins. 


> 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