IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

VBA Word Discussion :

Affichage de notes d'informations


Sujet :

VBA Word

  1. #1
    Membre régulier Avatar de Bragu Demon
    Homme Profil pro
    Intégrateur d'Explopitation
    Inscrit en
    Juin 2013
    Messages
    125
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Intégrateur d'Explopitation
    Secteur : Service public

    Informations forums :
    Inscription : Juin 2013
    Messages : 125
    Points : 117
    Points
    117
    Par défaut Affichage de notes d'informations
    Bonjour le forum,

    Débutant avec du VBA Word, je suis à la recherche de conseils.
    J'utilise Office 2010 et je suis sous Windows 7 Entreprise 64 bits avec le SP1

    Mon sujet est la création d'une macro dans le modèle Normal.dotm qui doit vérifier un certain nombre de choses.

    La macro fonctionne, elle permet de changer des dates, sélectionner (ou désélectionner) des boutons d'options dans des tableaux, mettre à jour les champs et ce genre de choses.
    Elle contrôle aussi le début du nom du fichier et son emplacement.

    Si le nom ou l'emplacement ne sont pas corrects, j'affiche un message d'erreur (un bête msgbox).

    Je souhaiterai en plus de cela avoir une liste de choses à faire.
    Cette liste restant "flottante et sans focus" vis à vis de word, histoire de pouvoir continuer à bosser dessus.

    Actuellement j'ai ça :

    Nom : Sans titre.jpg
Affichages : 113
Taille : 48,9 Ko


    C'est là que ça se complique. J'ai donc pensé à générer un pense-bête avec le stikynot de windows 7, ça fonctionne "presque" parfaitement.
    Le problème que je rencontre et que je n'arrive pas à ouvrir une nouvelle note.
    Résultat, si j'ai une note existante (dans mon cas avec des numéros de téléphones utiles), mon texte s'affiche à la suite et c'est pourri...

    Donc ma question est double :
    • y a-t-il un moyen d'ouvrir en vba une nouvelle note ? (comme lorsque l'on clique sur le plus du pense-bête)
    • y a-t-il une autre solution pour générer un système de pense-malin ? Le principe des révisions n'étant pas satisfaisant (aà cause du public destinataire de tout ça)




    Voici le module faisant les contrôles :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
    132
    133
    134
    135
    136
    137
    138
    139
    140
    141
    142
    143
    144
    145
    146
    147
    148
    149
    150
    151
    152
    153
    154
    155
    156
    157
    158
    159
     
    Sub Check()
     
    Call Nom_FCR
    Call Sas_FCR
     
    End Sub
     
     
    Function VISA_DOMAINE()
     
    Dim VISA As Integer
     
            ' Demande si l'on veut appliquer le visa ou pas. Oui = 6, Non = 7
            VISA = MsgBox("Voulez-vous appliquer le Visa du Domaine Responsable ?", vbYesNo, "Appliquer le Visa ?")
                If VISA = 6 Then
                    Selection.HomeKey Unit:=wdStory ' Ce place au début du document
                    Call VISA_DOM_Date
                    Call Visa_DOM_OK
                    'Call Visa_DOM_KO
                Else
                    Exit Function
     
                End If
     
     
    End Function
     
    Function Visa_EXP_OK()
     
    ActiveDocument.Visa_E_OK.Value = True
    'ActiveDocument.Visa_E_KO.Value = False
     
    End Function
     
     
    Function Visa_EXP_KO()
     
    'ActiveDocument.Visa_E_OK.Value = False
    ActiveDocument.Visa_E_KO.Value = True
     
    End Function
     
    Function VISA_Exp_Date()
     
    Dim Act_Txt
     
    ' Sélectionne la cellule du tableau à tester.
    ActiveDocument.Tables(3).Cell(3, 3).Select
     
    ' Supprime et remplace par la date du jour
    With ActiveDocument.Tables(3).Cell(3, 3)
        Selection.MoveLeft Unit:=wdCharacter    ' Se positionne au début de la cellule
        Selection.MoveRight Unit:=wdCharacter, Count:=7 ' Saute 7 caractères vers la droite (pour conserver Date :
        Selection.EndKey Unit:=wdLine, Extend:=wdExtend
        Selection.MoveLeft Unit:=wdCharacter, Count:=1, Extend:=wdExtend
        Selection.Delete
        Selection.TypeText Text:=Date
     
    End With
     
    End Function
     
    Function Visa_DOM_OK()
     
    ActiveDocument.Visa_DR_OK.Value = True
    'ActiveDocument.Visa_DR_KO.Value = False
     
    End Function
     
     
    Function Visa_DOM_KO()
     
    'ActiveDocument.Visa_DR_OK.Value = False
    ActiveDocument.Visa_DR_KO.Value = True
     
    End Function
     
    Function VISA_DOM_Date()
     
    Dim Act_Txt
     
    ' Sélectionne la cellule du tableau à tester.
    ActiveDocument.Tables(3).Cell(3, 1).Select
     
    ' Supprime et remplace par la date du jour
    With ActiveDocument.Tables(3).Cell(3, 3)
        Selection.MoveLeft Unit:=wdCharacter    ' Se positionne au début de la cellule
        Selection.MoveRight Unit:=wdCharacter, Count:=7 ' Saute 7 caractères vers la droite (pour conserver Date :
        Selection.EndKey Unit:=wdLine, Extend:=wdExtend
        Selection.MoveLeft Unit:=wdCharacter, Count:=1, Extend:=wdExtend
        Selection.Delete
        Selection.TypeText Text:=Date
     
    End With
     
    End Function
     
    Function Nom_FCR()
     
    Dim FCR, VISA As String
     
    FCR = Mid(ActiveDocument.Name, 1, 4) ' Contrôle si le nom du Fichier commence par FCR-
    'InStr(ActiveDocument.Name, "FCR-")
     
    If FCR = "FCR-" Then
            Exit Function
     
        Else
            VISA = MsgBox("Le nom du fichier n'est pas aux normes :" & vbCrLf _
                & " Il commence par : " & FCR & vbCrLf & vbCrLf _
                & " Merci de penser à le corriger", vbCritical, "Erreur improbable ...    :-(")
                Call Open_Stiky("La FCR n'est pas aux normes")
        End If
     
    End Function
     
    Function Sas_FCR()
     
    Dim Sas, VISA As String
     
        Sas = InStr(ActiveDocument.Path, "1- SAS-LIVRAISON (de MCOMEP vers EXP)") ' Contrôle si la FCR et dans le SAS ou non
        'Sas = 0 ' Pour tester : 0 -> la FCR sera considérée en dehors du SAS
                '               1 -> la FCR sera considérée dans le SAS
     
        If Sas <> 0 Then  ' Si la FCR se trouve dans le SAS de livraison
            ' Demande si l'on veut appliquer le visa ou pas. Oui = 6, Non = 7
            VISA = MsgBox("Voulez-vous appliquer le Visa de l'Exploitation ?", vbYesNo, "Appliquer le Visa ?")
                If VISA = 6 Then ' Application du Visa
                    Selection.HomeKey Unit:=wdStory ' Ce place au début du document
                    Call VISA_Exp_Date
                    Call Visa_EXP_OK
                    'Call Visa_EXP_KO
                    Call VISA_DOMAINE
                Else ' Non application du VISA
     
                    Exit Function
     
                End If
       Else
            VISA = MsgBox("La FCR ne se trouve pas dans le SAS." & vbCrLf & vbCrLf _
                   & " Merci de penser à l'y placer", vbCritical, "Erreur improbable ...    :-(")
            Call Open_Stiky("Placer la FCR dans le SAS")
            VISA = MsgBox("Voulez-vous appliquer le Visa de l'Exploitation ?", vbYesNo, "Appliquer le Visa ?")
                If VISA = 6 Then ' Application du Visa
                    Selection.HomeKey Unit:=wdStory ' Ce place au début du document
                    Call VISA_Exp_Date
                    Call Visa_EXP_OK
                    'Call Visa_EXP_KO
                    Call VISA_DOMAINE
                Else ' Non application du VISA
     
                    Exit Function
     
                End If
     
        End If
     
    End Function

    Et un autre, qui contient la partie servant à l'ouverture de StikyNot :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    Option Explicit
     
    Private Declare Function Wow64DisableWow64FsRedirection Lib "kernel32.dll" (ByVal OldValue As Long) As Boolean
    Private Declare Function Wow64RevertWow64FsRedirection Lib "kernel32.dll" (ByVal OldValue As Long) As Boolean
    Private Declare Function Wow64EnableWow64FsRedirection Lib "kernel32.dll" (ByVal IsEnable As Boolean) As Boolean
    Private Declare Function IsWow64Process Lib "kernel32.dll" (ByVal IsEnable As Boolean) As Boolean
     
    Declare Function ShellExecute Lib "shell32.dll" Alias "ShellExecuteA" _
        (ByVal hwnd As Long, ByVal lpszOp As String, _
        ByVal lpszFile As String, ByVal lpszParams As String, _
        ByVal LpszDir As String, ByVal FsShowCmd As Long) _
        As Long
     
    Function Open_Stiky(Msg As String)
     
    Dim RetVal As Long
    Dim oDat As DataObject
    Dim t As Single
    Dim tmp As Long
    Set oDat = New DataObject
    oDat.SetText Msg & Chr(10) & Chr(13)
    oDat.PutInClipboard
     
    RetVal = Wow64DisableWow64FsRedirection(tmp)
    RetVal = ShellExecute(0, "open", "stikynot", "", "", 10)
    Wow64EnableWow64FsRedirection (True)
     
    If RetVal = 2 Or RetVal = 3 Then Exit Function
    t = Timer
    Do While Timer < t + 0.3: DoEvents: Loop
    SendKeys "^v"
    SendKeys "{NUMLOCK}"
    Set oDat = Nothing
     
    End Function

    Merci d'avance pour vos conseils

  2. #2
    Rédacteur/Modérateur

    Avatar de Heureux-oli
    Homme Profil pro
    Contrôleur d'industrie
    Inscrit en
    Février 2006
    Messages
    21 087
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 59
    Localisation : Belgique

    Informations professionnelles :
    Activité : Contrôleur d'industrie
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Février 2006
    Messages : 21 087
    Points : 42 926
    Points
    42 926
    Par défaut
    Salut,

    Pourquoi ne pas utiliser un formulaire non modal ?
    Tu peux afficher dans ce formulaire ce que tu veux, le positionner où tu veux.
    J'ai pas encore de décodeur, alors, postez en clair ! Comment mettre une balise de code ?
    Débutez en VBA

    Mes articles


    Dans un MP, vous pouvez me dire que je suis beau, ... mais si c'est une question technique je ne la lis pas ! Vous êtes prévenus !

  3. #3
    Membre régulier Avatar de Bragu Demon
    Homme Profil pro
    Intégrateur d'Explopitation
    Inscrit en
    Juin 2013
    Messages
    125
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Intégrateur d'Explopitation
    Secteur : Service public

    Informations forums :
    Inscription : Juin 2013
    Messages : 125
    Points : 117
    Points
    117
    Par défaut
    Bonjour Heureux-oli,

    Je ne souhaite pas utiliser de formulaire parce que je voudrais que l'utilisateur puis quitter son instance word, il s'agit de contrôle de conformité.
    Le nombre de documents à contrôler varie de entre 20 et 200 et ils sont ouvert par paquets de 10 environ à chaque fois.

    Passer par le pense-bête permet de garder un œil sur ce qu'il y a à faire une fois tous les fichiers contrôlés.

  4. #4
    Rédacteur/Modérateur

    Avatar de Heureux-oli
    Homme Profil pro
    Contrôleur d'industrie
    Inscrit en
    Février 2006
    Messages
    21 087
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 59
    Localisation : Belgique

    Informations professionnelles :
    Activité : Contrôleur d'industrie
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Février 2006
    Messages : 21 087
    Points : 42 926
    Points
    42 926
    Par défaut
    Salut,

    J'ai essayé de créer un note au lieu de l'ouvrir, mais ça ne fonctionne pas.
    J'ai pas encore de décodeur, alors, postez en clair ! Comment mettre une balise de code ?
    Débutez en VBA

    Mes articles


    Dans un MP, vous pouvez me dire que je suis beau, ... mais si c'est une question technique je ne la lis pas ! Vous êtes prévenus !

  5. #5
    Inactif  

    Homme Profil pro
    Développeur .NET
    Inscrit en
    Janvier 2012
    Messages
    4 904
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 67
    Localisation : Canada

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Finance

    Informations forums :
    Inscription : Janvier 2012
    Messages : 4 904
    Points : 10 168
    Points
    10 168
    Billets dans le blog
    36
    Par défaut
    Bonjour,

    Je pense que tu devrais vérifier si tu as eu OneNote avec ta version d'Office. C'est un programme que tu piloter par VBA automation, comme pour tout autre programme Office. Tu pourrais centraliser tes notes et y revenir sans devoir lancer Word.


    Quelques exemples Office (incluant 13 pour OneNote) à télécharger:

    http://code.msdn.microsoft.com/offic...%20Samples.zip
    À ma connaissance, le seul personnage qui a été diagnostiqué comme étant allergique au mot effort. c'est Gaston Lagaffe.

    Ô Saint Excel, Grand Dieu de l'Inutile.

    Excel n'a jamais été, n'est pas et ne sera jamais un SGBD, c'est pour cela que Excel s'appelle Excel et ne s'appelle pas Access junior.

  6. #6
    Rédacteur/Modérateur

    Avatar de Heureux-oli
    Homme Profil pro
    Contrôleur d'industrie
    Inscrit en
    Février 2006
    Messages
    21 087
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 59
    Localisation : Belgique

    Informations professionnelles :
    Activité : Contrôleur d'industrie
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Février 2006
    Messages : 21 087
    Points : 42 926
    Points
    42 926
    Par défaut
    Salut,

    Il y a aussi les notes d'Outlook.
    J'ai pas encore de décodeur, alors, postez en clair ! Comment mettre une balise de code ?
    Débutez en VBA

    Mes articles


    Dans un MP, vous pouvez me dire que je suis beau, ... mais si c'est une question technique je ne la lis pas ! Vous êtes prévenus !

  7. #7
    Membre régulier Avatar de Bragu Demon
    Homme Profil pro
    Intégrateur d'Explopitation
    Inscrit en
    Juin 2013
    Messages
    125
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Intégrateur d'Explopitation
    Secteur : Service public

    Informations forums :
    Inscription : Juin 2013
    Messages : 125
    Points : 117
    Points
    117
    Par défaut
    Merci pour vos réponses.

    Je viens de m'apercevoir que dans le pense bête, le raccourci clavier ctrl + n ouvre une nouvelle note.
    Je me dis que mettre SendKeys "^n" après RetVal = ShellExecute(0, "open", "stikynot", "", "", 10) est peut-être une solution.

    Sinon je vais m'orienter vers OneNote ou les tâches d'outlook.

Discussions similaires

  1. Désactiver l'affichage du panneau d'informations
    Par laguite51 dans le forum IGN API Géoportail
    Réponses: 27
    Dernier message: 25/09/2010, 13h49
  2. Eviter l'affichage des notes dans le log
    Par stefsas dans le forum SAS Base
    Réponses: 2
    Dernier message: 20/06/2008, 16h50
  3. affichage de message d'information personnalisé
    Par josémaria dans le forum Autres Logiciels
    Réponses: 3
    Dernier message: 19/10/2006, 16h03
  4. Affichage de beaucoup d'information
    Par Hitomi_Kay dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 19/06/2006, 17h43
  5. Ouverture d'une popup avec affichage d'information
    Par leloup84 dans le forum Général JavaScript
    Réponses: 3
    Dernier message: 03/02/2006, 19h53

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo