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 :

Signature manuelle sous Paint en OLEObject -> Dimensionner ma fenêtre Paint.


Sujet :

Macros et VBA Excel

  1. #1
    Nouveau membre du Club
    Homme Profil pro
    Chef de projet MOA
    Inscrit en
    Février 2013
    Messages
    32
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France

    Informations professionnelles :
    Activité : Chef de projet MOA
    Secteur : Transports

    Informations forums :
    Inscription : Février 2013
    Messages : 32
    Points : 28
    Points
    28
    Par défaut Signature manuelle sous Paint en OLEObject -> Dimensionner ma fenêtre Paint.
    Bonjour,

    J'ai mis en application dans mon document Excel un code qui me permet d'accoler dans l'emplacement choisi une signature.
    Cette signature nécessite l'ouverture d'une fenêtre Paint qui servira au dessin de la signature.

    Tout fonctionne, seul problème : l'ergonomie. Je souhaiterais dimensionner la fenêtre de l'application Paint pour qu'elle n'utilise pas tout l'écran...

    Code actuel :

    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
    'ouvre paint et retaille l'image pour correspondre au rapport d'impression
                Set ole = ActiveSheet.OLEObjects.Add(ClassType:="Paint.Picture", Link:=False, _
                        DisplayAsIcon:=False)
     
                With ole
                    .Interior.Color = vbWhite
                    .Border.LineStyle = 0
                    .Border.Color = vbWhite
                    .Activate
                End With
     
                Application.Wait Time + TimeSerial(0, 0, 1)
                SendKeys "^w", True
                DoEvents
                SendKeys "{RIGHT}", True
                DoEvents
                SendKeys "{TAB}", True
                DoEvents
                SendKeys "{TAB}", True
                DoEvents
                SendKeys "{TAB}", True
                DoEvents
                SendKeys " ", True
                DoEvents
                SendKeys "+{TAB}", True
                DoEvents
                SendKeys "+{TAB}", True
                DoEvents
                'rentre la valeur horizontale
                SendKeys "280", True
                DoEvents
                SendKeys "{TAB}", True
                DoEvents
                'rentre la valeur vertical
                SendKeys "65", True
                DoEvents
                'entrer
                SendKeys "~", True
                DoEvents
                SendKeys "^{PGUP}^{PGUP}", True
                DoEvents
    Avez-vous une solution ?

    Arnaud

  2. #2
    Invité
    Invité(e)
    Par défaut
    Bonjour,

    D'après ce que je vois, votre objet Ole devrait posséder les propriétés Top, Left, Height, Width pour le positionner et le dimensionner.

    Pourquoi êtes-vous obligé de passer par paint ?

    Cordialement.

  3. #3
    Nouveau membre du Club
    Homme Profil pro
    Chef de projet MOA
    Inscrit en
    Février 2013
    Messages
    32
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France

    Informations professionnelles :
    Activité : Chef de projet MOA
    Secteur : Transports

    Informations forums :
    Inscription : Février 2013
    Messages : 32
    Points : 28
    Points
    28
    Par défaut
    Bonjour,

    Je n'ai pas trouvé d'autre solution que de passer par Paint... Il y en a une ?

    J'ai bien essayé de modifier les paramètre Width et Height de mon OLE Object mais ça change la zone d'image dans ma feuille de façon proportionnelle... Il me faut une forme rectangulaire et ça me dessine un carré.

    Mais sinon le problème ne réside pas "tant" dans la dimension de l'OLE Object mais plutôt dans le fait que l'application Paint ne s'ouvre pas dans les dimensions que je souhaiterais...

    Vous voyez une solution ?

  4. #4
    Invité
    Invité(e)
    Par défaut
    Citation Envoyé par ateppaz Voir le message
    Je n'ai pas trouvé d'autre solution que de passer par Paint... Il y en a une ?
    Vous pouvez essayer ce code :

    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
     
    Sub Insert_Image(ByVal FeuilleEnCours As Worksheet, ByVal RepertoireImages As String, ByVal NomDuFichierImage As String)
    ' © Solution adaptée de celle de Popi du MPFE
     
    Dim CelluleSignature As Range
    Dim ShapeImage As ShapeRange
     
      With FeuilleEnCours
     
           Set CelluleSignature = .Cells(50, 7) ' Position de la signature
           .Pictures.Insert(RepertoireImages & "\" & NomDuFichierImage).Select
           Set ShapeImage = Selection.ShapeRange
           With ShapeImage
                .LockAspectRatio = msoFalse
                .Top = CelluleSignature.Top
                .Left = CelluleSignature.Left
                .Height = CelluleSignature.Height * 4  ' A adapter à votre image
                .Width = CelluleSignature.Width * 2    ' A adapter à votre image
           End With
          Set ShapeImage = Nothing
          Set CelluleSignature = Nothing
       End With
     
     End Sub
     
     
    Sub TesterLInsertImage()
        Insert_Image ActiveSheet, "Le répertoire contenant la photo", "Le nom de la photo.JPG"  ' JPG ou autres formats
    End Sub

    Cordialement.

  5. #5
    Inactif  

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

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

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

    Une solution toute simple. Scanner la/les signatures et insérer directement le fichier image de la signature. Au besoin, on peut mettre les images des signatures dans un dossier caché ou protégé, ou un clef USB dans une armoire verrouillée pour en limiter l'accès.

    Oups!!! Désolé Éric, j'aurais dû lire ta réponse avant d'en écrire une. Parce que, fondamentalement, c'est la même chose.

  6. #6
    Nouveau membre du Club
    Homme Profil pro
    Chef de projet MOA
    Inscrit en
    Février 2013
    Messages
    32
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France

    Informations professionnelles :
    Activité : Chef de projet MOA
    Secteur : Transports

    Informations forums :
    Inscription : Février 2013
    Messages : 32
    Points : 28
    Points
    28
    Par défaut
    Votre solution a tout les deux est sympathique, j'ai testé la tienne Eric et elle fonctionne, cependant j'ai besoin de faire signer un client en situation réelle et instantanée puis de lui éditer directement le fichier pdf avec la signature qu'il vient de m'apposer.

    Voila pourquoi la solution de Paint pour que le client signe directement avec un stylet me parait efficace.

    Si on en revient à la fenêtre Paint qui s'ouvre, y aurait-il une technique vérifiée pour l'ouvrir avec des dimensions précises ?

    Arnaud

  7. #7
    Invité
    Invité(e)
    Par défaut
    Citation Envoyé par ateppaz Voir le message
    Si on en revient à la fenêtre Paint qui s'ouvre, y aurait-il une technique vérifiée pour l'ouvrir avec des dimensions précises ?

    Arnaud
    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
    Sub EssaiOleShapeRange()
     
    Dim CelluleSignature As Range
    Dim Ole As Object
    Dim ShapeImage As ShapeRange
     
    'ouvre paint et retaille l'image pour correspondre au rapport d'impression
                Set Ole = ActiveSheet.OLEObjects.Add(ClassType:="Paint.Picture", Link:=False, DisplayAsIcon:=False)
                Set CelluleSignature = ActiveSheet.Cells(50, 7) ' Position de la signature
     
                With Ole
                    .Interior.Color = vbWhite
                    .Border.LineStyle = 0
                    .Border.Color = vbWhite
                    .Activate
               End With
     
                Set ShapeImage = Ole.ShapeRange
                With ShapeImage
                     .LockAspectRatio = msoFalse
                     .Top = CelluleSignature.Top
                     .Left = CelluleSignature.Left
                     .Height = CelluleSignature.Height * 4  ' A adapter à votre image
                     .Width = CelluleSignature.Width * 2    ' A adapter à votre image
                End With
     
         Set ShapeImage = Nothing
         Set CelluleSignature = Nothing
         Set Ole = Nothing
     
    End Sub

    Cordialement.
    Dernière modification par Invité ; 30/01/2015 à 18h36.

  8. #8
    Expert éminent sénior

    Profil pro
    Conseil, Formation, Développement - Indépendant
    Inscrit en
    Février 2010
    Messages
    8 523
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Conseil, Formation, Développement - Indépendant

    Informations forums :
    Inscription : Février 2010
    Messages : 8 523
    Points : 16 459
    Points
    16 459
    Par défaut
    Bonjour


    Sauf erreur de ma part, il faut faire appelle aux API Windows pour modifier la taille d'une fenêtre mais, toujours sauf erreur, une application s'ouvre à la taille où elle était au moment de sa dernière fermeture.

  9. #9
    Nouveau membre du Club
    Homme Profil pro
    Chef de projet MOA
    Inscrit en
    Février 2013
    Messages
    32
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France

    Informations professionnelles :
    Activité : Chef de projet MOA
    Secteur : Transports

    Informations forums :
    Inscription : Février 2013
    Messages : 32
    Points : 28
    Points
    28
    Par défaut
    Super Eric !
    Ta solution résout en parti mon problème qui été aussi de dimensionner correctement mon image dans ma cellule. La méthode ShapeRange m'a donc été utile !

    Confirme tu ce que 78chris dit sur le dimensionnement de la page Paint ? Y a t-il un moyen de contourner tout ça ?

    Cordialement,
    Arnaud

Discussions similaires

  1. Signature projet sous Visual Studio 2010
    Par Nastro dans le forum Visual Studio Team System
    Réponses: 0
    Dernier message: 12/06/2012, 11h46
  2. [Débutant] seuillage manuel sous matlab
    Par aymen cali dans le forum Images
    Réponses: 3
    Dernier message: 30/04/2010, 18h13
  3. Réponses: 3
    Dernier message: 31/08/2006, 12h59
  4. pc qui s'eteind manuellement sous xp
    Par jouidos dans le forum Ordinateurs
    Réponses: 1
    Dernier message: 18/06/2006, 02h40
  5. Réponses: 3
    Dernier message: 29/08/2005, 16h33

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