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

Macros et VBA Excel Discussion :

Insérer deux signatures dans un document ?


Sujet :

Macros et VBA Excel

  1. #1
    Membre habitué
    Homme Profil pro
    Chef de projet en SSII
    Inscrit en
    Mars 2019
    Messages
    13
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Chef de projet en SSII

    Informations forums :
    Inscription : Mars 2019
    Messages : 13
    Par défaut Insérer deux signatures dans un document ?
    Bonjour à tous,

    Aujourd’hui, je sollicite vos lumières car je suis bloqué. Je vous explique ma problématique. J’ai un fichier Excel de facturation. Prenons 2 utilisateurs : A et B. Voilà ce que je souhaiterai : A remplit le fichier Excel de facturation. Il clique sur un bouton, cela insère sa signature (qui se trouve dans un endroit défini au préalable). Il enregistre le tout. L’envoie à B. B vérifie le document. Et signe à son tour en cliquant sur l’autre bouton pour confirmer que la facturation est bien valide (avec sa propre signature qui se trouve dans un endroit défini au préalable). Il s’agit du scénario idéal.

    A l’heure actuelle, voici mon code :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    Sub Signature_1()
    Range("AE13").Select
        ActiveSheet.Pictures.Insert("C:\Users\Public\ signature.png").Select
    End Sub
     
    Sub Signature_2()
    Range("AV13").Select
        ActiveSheet.Pictures.Insert("C:\Users\Public\signature.png").Select
    End Sub
    J’applique la Signature_1 à un bouton, et la Signature_2 à l’autre bouton. Je demande à A de mettre sa signature dans son dossier « Public » et à B de faire de même en nommant le fichier signature.png

    Après plusieurs tests : A remplit la facture. Clique sur le bouton. Cela insère sa signature. Il enregistre. Et envoie à B. Le problème se trouve ici : Dès que B ouvre le document reçu, la signature de A est directement remplacée par la sienne sans même qu’il ne clique sur le bouton. Alors que moi, j’aimerais que la signature de A reste justement et que B clique sur l’autre bouton pour insérer la sienne. Dans le process, nous ne pouvons pas faire un dossier avec les signatures de chaque utilisateur, chaque utilisateur doit avoir uniquement sa signature sur son poste. Existe-t-il un twist pour conserver la signature de A quand il envoie le document à B, pour que B n’ait plus qu’à rajouter sa signature ? Telle est ma question. J’espère avoir été clair.

    En vous remerciant d’avance,

    Bonne journée,

  2. #2
    Expert éminent Avatar de Menhir
    Homme Profil pro
    Ingénieur
    Inscrit en
    Juin 2007
    Messages
    16 037
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2007
    Messages : 16 037
    Par défaut
    Remarque liminaire : je ne vois pas à quoi sert ton application.
    Une signature est faire pour prouver l'engagement d'une personne sur un document.
    Dans ton cas, n'importe qui peut mettre la signature concernée dans le document : il n'y a aucune preuve que celui qui a placé l'image de signature soit effectivement le signataire : il n'y a aucun code personnel, aucune vérification.

    Donc ces signatures n'ont aucune valeur.
    A mon avis, mettre simplement le nom des personnes désignées aurait autant de valeur et serait moins complexe.

    Si tu n'as pas de budget pour mettre en place un vrai système de signature électronique, je ne conseille de voir avec Adobe Accrobat qui dispose d'un module de signature électronique. Il faut générer un fichier PDF et ensuite le signer électroniquement (avec un code personnel) en utilisant simplement Accrobat Reader.
    Ca n'est pas parfait mais pour le prix, c'est déjà bien.
    Je l'ai déjà mis en place dans certains services et ça fonctionne plutôt bien.

    A l’heure actuelle, voici mon code :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    Sub Signature_1()
    Range("AE13").Select
        ActiveSheet.Pictures.Insert("C:\Users\Public\ signature.png").Select
    End Sub
     
    Sub Signature_2()
    Range("AV13").Select
        ActiveSheet.Pictures.Insert("C:\Users\Public\signature.png").Select
    End Sub
    En fait, tu pourrais n'avoir qu'un seul bouton en utilisant la propriété Application.Username qui renvoie le nom de login de l'utilisateur :
    https://docs.microsoft.com/fr-fr/off...ation.username
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    Sub Signature()
        Select Case UCase(Application.UserName)
        Case "MARTIN", "MBELLA", "PARKER"
            Range("AE13").Select
        Case "STARK", "DUPONT", "PARSKY"
            Range("AV13").Select
        Case Else
            Exit Sub
        End Select
        ActiveSheet.Pictures.Insert("C:\Users\Public\signature.png").Select
    End Sub
    Le problème se trouve ici : Dès que B ouvre le document reçu, la signature de A est directement remplacée par la sienne sans même qu’il ne clique sur le bouton.
    Je ne comprends pas comment ce phénomène peut se produire.

    Essaye avec le code suivant :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ActiveSheet.Shapes.AddPicture "C:\Users\Public\signature.png", False, True, Selection.Top, Selection.Left, 100, 50
    Normalement, dans ce code, le "False, True" devrait rompre le lien entre le fichier image et le fichier Excel et enregistrer l'image dans le fichier Excel.
    Je te laisse ajuster toi-même les largeur et hauteur (les deux dernières valeurs de la ligne).
    Lire ça : https://docs.microsoft.com/fr-fr/off...pes.addpicture

  3. #3
    Membre habitué
    Homme Profil pro
    Chef de projet en SSII
    Inscrit en
    Mars 2019
    Messages
    13
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Chef de projet en SSII

    Informations forums :
    Inscription : Mars 2019
    Messages : 13
    Par défaut
    Bonjour,

    Merci à toi pour tous ces éléments de réponse. En effet, nous faisons avec les moyens de bord, cela semble le système le "moins pire" dans le sens où chaque utilisateur aurait uniquement sa signature sur son poste (Bien évidemment, il existe des failles comme le fait de C/C des signatures de documents déjà signés). C'est clair que mettre simplement le nom, aurait la même valeur, tu as totalement raison, et serait beaucoup moins complexe. Je vais me renseigner pour cette solution, merci.

    J'ai testé ton premier code tel quel, je l'ai intégrer à un bouton, il n'y a pas d'erreur, mais j'ai beau cliquer dessus, rien ne se passe. Comment l'expliquer ?

    Pour le second, je l'ai incorporé dans mon code :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    Sub Signature_2()
    Range("AV13").Select
     ActiveSheet.Shapes.AddPicture "C:\Users\Public\signature.png", False, True, Selection.Top, Selection.Width, 70, 70
    End Sub
    Quand je clique sur le bouton en question, cela insère ma signature mais pas dans la cellule AV13. Cela me la glisse en haut du document vers le Q1-Q2. Comment l'expliquer ?

    Nous sommes d'accord que ce phénomène est étrange ? Je pensais que le fichier se calquait d'office sur le chemin en question (et ce même sans appuyer) et modifier dès l'ouverture mais cela me semble étrange.

    Merci à toi !

  4. #4
    Expert éminent Avatar de Menhir
    Homme Profil pro
    Ingénieur
    Inscrit en
    Juin 2007
    Messages
    16 037
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2007
    Messages : 16 037
    Par défaut
    Citation Envoyé par Rafap Voir le message
    J'ai testé ton premier code tel quel, je l'ai intégrer à un bouton, il n'y a pas d'erreur, mais j'ai beau cliquer dessus, rien ne se passe. Comment l'expliquer ?
    Sans doute parce que ton UserName ne figure pas dans les Case de ce code.
    Dans la fenêtre d'exécution, tape ? Application.UserName pour connaitre ton UserName et ajoute-le à l'une des listes.

    Quand je clique sur le bouton en question, cela insère ma signature mais pas dans la cellule AV13. Cela me la glisse en haut du document vers le Q1-Q2.
    Inverse "Top" et "Left".

    Perso, je n'aime pas trop les propriétés Select. Les variables, c'est plus fiable.
    Donc :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    Sub Signature_1()
    Dim LT As Long, LG As Long
        Select Case UCase(Application.UserName)
        Case "MARTIN", "MBELLA", "PARKER"
            LT = Range("AE13").Top
            LG = Range("AE13").Left
        Case "STARK", "DUPONT", "PARSKY"
            LT = Range("AV13").Top
            LG = Range("AV13").Left
        Case Else
            Exit Sub
        End Select
        ActiveSheet.Shapes.AddPicture "C:\Users\Public\signature.png", False, True, LG, LT, 100, 50
    End Sub

  5. #5
    Membre habitué
    Homme Profil pro
    Chef de projet en SSII
    Inscrit en
    Mars 2019
    Messages
    13
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Chef de projet en SSII

    Informations forums :
    Inscription : Mars 2019
    Messages : 13
    Par défaut
    Merci. J'ai fait ?Application.UserName, cela m'affiche bien mon UserName. Que dois-je faire quand tu dis de l'ajouter à une liste ? Chaque utilisateur va devoir le faire ? Je n'ai pas du tout saisi, désolé, cela doit être tout bête.

    J'ai inversé, mais on ne peut pas régler à la cellule près avec ton premier code du "Top" ? Parce que là, ça le met juste à gauche du coup, c'est là le soucis. Alors que je souhaitais la rattacher à ma cellule AV13. Merci pour ton second code, aucune erreur encore, mais quand je clique sur le bouton, rien ne se passe du tout, c'est là que je ne comprends pas. Merci !

  6. #6
    Expert éminent Avatar de Menhir
    Homme Profil pro
    Ingénieur
    Inscrit en
    Juin 2007
    Messages
    16 037
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2007
    Messages : 16 037
    Par défaut
    Citation Envoyé par Rafap Voir le message
    Que dois-je faire quand tu dis de l'ajouter à une liste ?
    Tu n'as pas l'impression que les lignes "Case" ressemble à des listes de noms ?

    Chaque utilisateur va devoir le faire ? Je n'ai pas du tout saisi, désolé, cela doit être tout bête.
    Non. Il suffira de mettre toi-même tous les noms d'utilisateurs autorisé dans l'une ou l'autre des deux listes de nom.

    J'ai inversé, mais on ne peut pas régler à la cellule près avec ton premier code du "Top" ?
    D'abord, tu n'as jamais précisé que l'image devais s'ajuster à la cellule.
    Ensuite, excuse-moi mais tu as vraiment l'intention de rester totalement passif dans la résolution de ton problème où tu comptes essayer un petit peu par toi-même ?

    Utilise les propriété Height et Width de la cellule pour placer la hauteur et la largeur dans les deux dernier paramètres du AddPicture.

    quand je clique sur le bouton, rien ne se passe du tout, c'est là que je ne comprends pas.
    Je t'ai déjà expliqué pourquoi dans ma réponse précédente.

  7. #7
    Membre habitué
    Homme Profil pro
    Chef de projet en SSII
    Inscrit en
    Mars 2019
    Messages
    13
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Chef de projet en SSII

    Informations forums :
    Inscription : Mars 2019
    Messages : 13
    Par défaut
    Merci ! Je comprends mieux maintenant, en effet, cela fonctionne maintenant. Merci beaucoup !

Discussions similaires

  1. Réponses: 0
    Dernier message: 10/08/2013, 13h47
  2. Insérer un Objet dans un document Word
    Par benstile dans le forum VBScript
    Réponses: 5
    Dernier message: 14/09/2010, 12h52
  3. insérer plusieurs images dans une document word
    Par Montor dans le forum Langage
    Réponses: 1
    Dernier message: 09/12/2009, 13h14
  4. [FPDF] Insérer un formulaire dans un document PDF
    Par karimphp dans le forum Bibliothèques et frameworks
    Réponses: 3
    Dernier message: 26/01/2008, 12h07
  5. Réponses: 2
    Dernier message: 30/04/2007, 10h22

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