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 :

hauteur et largeur d'une copie d'image


Sujet :

Macros et VBA Excel

  1. #1
    Inscrit
    Inscrit en
    Octobre 2006
    Messages
    430
    Détails du profil
    Informations forums :
    Inscription : Octobre 2006
    Messages : 430
    Points : 87
    Points
    87
    Par défaut hauteur et largeur d'une copie d'image
    Voila j'ai réussi a faire un programme qui copie des tableau d'escel et les colle sur word...Mais maintenant comment faire pour leur donnez une largeur et une hauteur précise ou leur dire de reduire limage à 50%...
    Voici mon programme car je c'est pas ou l'inserer non plus dsl...
    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
    Private Sub CommandButton1_Click()
          Dim WdApp As Word.Application
          Dim WdDoc As Word.Document
          Dim i, hauteur As Double, plage As Range
          Dim j As Integer
          Dim k As Integer
          Dim nbre As Integer
     
          Set WdApp = CreateObject("word.application")
          Set WdDoc = WdApp.Documents.Open("C:\ah.doc")
     
          WdApp.Visible = True
     
     
          nbre = ActiveWorkbook.Sheets.Count
     
     
     
     
     
     
     
     
     
     For j = 2 To 12
                 If Worksheets(j).Range("J25") <> 0 Or Worksheets(j).Range("J26") <> 0 Then
     
     
     
            Do                          'Sélection de la plage de cellules à copier
                On Error Resume Next                          'gère une plage nulle
                Set plage = Worksheets(j).Range("A1:L38")
               If plage Is Nothing Then GoTo Fin             'sortie si plage vide
                 On Error GoTo 0
                 Loop While InStr(plage.Address, ",") <> 0
                 plage.Copy                                                'plage copiée
                 DoEvents                  'laisse au system le temps de copier la plage
     
                                          'Place l'image sur le signet "Signet"
                With WdApp
                    .Selection.PasteSpecial Link:=True, DataType:=wdPasteOLEObject, _
                    Placement:=wdInLine, DisplayAsIcon:=False
                    WdDoc.InlineShapes(1).Width = 18    'Règle la largeur dans Word
     
                           'Calcul de la hauteur de plage dans le document word
                     hauteur = 18 / WdDoc.InlineShapes(1).Width _
                                 * WdDoc.InlineShapes(1).Height
                     WdDoc.InlineShapes(1).Height = Int(hauteur)       'Règle la hauteur
                End With
     
          End If
    Next j
     
     
     
     
     
     
     
     If nbre > 15 Then
        For k = 16 To nbre
          If Worksheets(k).Range("J25") <> 0 Or Worksheets(k).Range("J26") <> 0 Then
     
     
     
        Do                          'Sélection de la plage de cellules à copier
            On Error Resume Next                          'gère une plage nulle
            Set plage = Range("A1:L38")
            If plage Is Nothing Then GoTo Fin             'sortie si plage vide
            On Error GoTo 0
        Loop While InStr(plage.Address, ",") <> 0
        plage.Copy                                                'plage copiée
        DoEvents                  'laisse au system le temps de copier la plage
     
                                          'Place l'image sur le signet "Signet"
        With WdApp
               .Selection.PasteSpecial Link:=True, DataType:=wdPasteOLEObject, _
                           Placement:=wdInLine, DisplayAsIcon:=False
               WdDoc.InlineShapes(1).Width = 420   'Règle la largeur dans Word
     
                              'Calcul de la hauteur de plage dans le document word
               hauteur = 420 / WdDoc.InlineShapes(1).Width _
                                    * WdDoc.InlineShapes(1).Height
               WdDoc.InlineShapes(1).Height = Int(hauteur)       'Règle la hauteur
           End With
           End If
          Next k
     
     End If
        'WdApp.Visible = True 'Pour voir (Ne pas fermer le fichier depuis Word)
     
    Fin::
        WdDoc.Close True                       'Enregistre et ferme le doc word
        DoEvents            'Laisse au system le temps d'enregistrer le fichier
        WdApp.Quit                                            'ferme la session
     
        Set plage = Nothing
        Set WdApp = Nothing
        Set WdDoc = Nothing
    End Sub

  2. #2
    Inactif  
    Avatar de ouskel'n'or
    Profil pro
    Inscrit en
    Février 2005
    Messages
    12 464
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 12 464
    Points : 15 543
    Points
    15 543
    Par défaut
    Je t'ai répondu sur l'autre discussion.

    NB - Le code que tu mets ne sert à rien pour la compréhension de ton pb

    Edit
    Tu en es où ?

  3. #3
    Inscrit
    Inscrit en
    Octobre 2006
    Messages
    430
    Détails du profil
    Informations forums :
    Inscription : Octobre 2006
    Messages : 430
    Points : 87
    Points
    87
    Par défaut
    J'ai répondu sur l'autre mais je vais te le redire ici, je ne sais pas ou placer le code et de plus quel sont les code qui détermine la hauteur et largeur de l'image...Car je corit que les code qui sont dan smon script détermine les marge???§§§§!!!!

  4. #4
    Inactif  
    Avatar de ouskel'n'or
    Profil pro
    Inscrit en
    Février 2005
    Messages
    12 464
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 12 464
    Points : 15 543
    Points
    15 543
    Par défaut
    Mets ton code et, séparément, mets le code enregistré en faisant.

  5. #5
    Inscrit
    Inscrit en
    Octobre 2006
    Messages
    430
    Détails du profil
    Informations forums :
    Inscription : Octobre 2006
    Messages : 430
    Points : 87
    Points
    87
    Par défaut
    Non mais je comprend rien, j eveux jsute savoir comment en fixe une largeur et une hauteur en centimetre ou en pourcentage...

  6. #6
    Inactif  
    Avatar de ouskel'n'or
    Profil pro
    Inscrit en
    Février 2005
    Messages
    12 464
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 12 464
    Points : 15 543
    Points
    15 543
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
            WdDoc.InlineShapes(1).Width = 453.55    'Règle la largeur dans Word
     
                           'Calcul de la hauteur de plage dans le document word
            hauteur = 453.55 / WdDoc.InlineShapes(1).Width _
                                 * WdDoc.InlineShapes(1).Height
    Là, ça calcule la hauteur de la plage de cellules collée dans word en fonction de la largeur de cette même plage.

    Si tu as fait ce que je t'ai dit, "enregistré dans word le redimensionnement de ta plage", tu as la hauteur et la largeur de cette foutue plage.
    Il te suffit de remplacer le code ci-dessus par l'une et l'autre.
    Mais j'ai l'impression que tu voudrais qu'on le fasse pour toi. Et ce serait fait si on avait tes deux fichiers, pour pouvoir passer à autre chose...
    Pour passer des cm aux pixels, tu commences par convertir les centimètres en pouces, puis les pouces en pixels. Tu préfères ça plutôt qu'enregistrer en faisant ? alors tiens, l'aide t'apporte son soutien
    Citation Envoyé par L'aide en ligne (F1)
    PixelsPerInch, propriété
    Voir aussi S'applique à Exemple Spécificités
    Cette propriété renvoie ou définit la densité (exprimée en pixels par pouce) des images de graphismes et des cellules de tableau d'une page Web. La plage de paramètres est généralement comprise entre 19 et 480 pixels par pouce et les paramètres courants des tailles d'écran répandues sont 72, 96 et 120 pixels par pouce. Le paramètre par défaut est 96 pixels par pouce. Type de données Long en lecture-écriture.

    Notes
    Cette propriété détermine la taille des images et des cellules de la page Web spécifiée par rapport à la taille du texte lorsque vous visualisez le document enregistré dans un navigateur Web. Les dimensions physiques de l'image ou de la cellule obtenue sont le résultat des dimensions initiales (en pouces) multipliées par le nombre de pixels par pouce.

    La propriété ScreenSize vous permet de définir la taille d'écran optimale pour les navigateurs Web cible.

    Exemple
    Cet exemple montre comment définir la densité en pixels, en fonction de la taille d'écran cible du navigateur. Pour les écrans de 800 x 600 pixels, la densité est de 72 pixels par pouce. Pour les écrans de 1024 x 768 pixels, la densité est de 96 pixels par pouce. Dans les autres cas, vous devez utiliser une densité de 120 pixels par pouce.

    With Application.DefaultWebOptions
    Select Case .ScreenSize
    Case msoScreenSize800x600
    .PixelsPerInch = 72
    Case msoScreenSize1024x768
    .PixelsPerInch = 96
    Case Else
    .PixelsPerInch = 120
    End Select
    End With
    Maintenant, si tu préfères écraser les mouches avec une bombe nucléaire plutôt qu'avec une tapette, libre à toi.

  7. #7
    Inscrit
    Inscrit en
    Octobre 2006
    Messages
    430
    Détails du profil
    Informations forums :
    Inscription : Octobre 2006
    Messages : 430
    Points : 87
    Points
    87
    Par défaut
    Je ne vois pas comment enregistrez sinon sa fai lontemps que je l'aurai fait.
    ..Faire quoi, où???

    Et pourquoi le redimenssionnement ce met qu sur ma première image coller et pas les autres

  8. #8
    Inactif  
    Avatar de ouskel'n'or
    Profil pro
    Inscrit en
    Février 2005
    Messages
    12 464
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 12 464
    Points : 15 543
    Points
    15 543
    Par défaut
    Je reprends tout à zéro mais après, ma patience sera à ranger dans les vieux chiffons.
    Tu colles ton image dans Word. Un point c'est tout. met en remarque le redimensionnement.
    1 - Sous Word, tu ouvres ton Document.doc
    2 - Tu sélectionnes ta plage collée
    3 - Tu lances l'enregistreur de macros
    4 - Tu vas dans Format -> Objet -> Taille
    5 - Tu donnes les bonnes dimensions à ta plage
    6 - Tu arrêtes l'enregistrement de la macro
    7 - Tu regardes ce qu'il y a dedans Les dernier Height et Width sont les bons

    Pourquoi par macro ? Ben tu fais l'expérience :
    Tu fais 1, 2, 4 et 5... Là tu as les bonnes dimensions de ton objet... en cm
    Mais tu fais ce que tu veux ! Pour ma part, j'arrête là.

  9. #9
    Inscrit
    Inscrit en
    Octobre 2006
    Messages
    430
    Détails du profil
    Informations forums :
    Inscription : Octobre 2006
    Messages : 430
    Points : 87
    Points
    87
    Par défaut
    C'est bon je te remercie, sans tes explications j'aurai jamais réussi bref...merci, une dernière question pourquoi, le redimensionnement se fait que sur ma première image et pas sur les autre???

  10. #10
    Inactif  
    Avatar de ouskel'n'or
    Profil pro
    Inscrit en
    Février 2005
    Messages
    12 464
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 12 464
    Points : 15 543
    Points
    15 543
    Par défaut
    Dans ces deux lignes,
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
            WdDoc.InlineShapes(1).Width = 453.55    'Règle la largeur dans Word
     
                           'Calcul de la hauteur de plage dans le document word
            hauteur = 453.55 / WdDoc.InlineShapes(1).Width _
                   * WdDoc.InlineShapes(1).Height
            WdDoc.InlineShapes(1).Height = Int(hauteur)       'Règle la hauteur
    remplace (1) par (ActiveDocument.InlineShapes.Count)
    C'est une omission
    Ce qui va donner :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
            WdDoc.InlineShapes(WdDoc.InlineShapes.Count).Width = 453.55    'Règle la largeur dans Word
     
                           'Calcul de la hauteur de plage dans le document word
            hauteur = 453.55 / WdDoc.InlineShapes(WdDoc.InlineShapes.Count).Width _
                 * WdDoc.InlineShapes(WdDoc.InlineShapes.Count).Height
            WdDoc.InlineShapes(WdDoc.InlineShapes.Count).Height = _
            Int(hauteur)       'Règle la hauteur
    Je corrige dans Contribuez

  11. #11
    Inscrit
    Inscrit en
    Octobre 2006
    Messages
    430
    Détails du profil
    Informations forums :
    Inscription : Octobre 2006
    Messages : 430
    Points : 87
    Points
    87
    Par défaut
    je te remercie bcp

  12. #12
    Inactif  
    Avatar de ouskel'n'or
    Profil pro
    Inscrit en
    Février 2005
    Messages
    12 464
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 12 464
    Points : 15 543
    Points
    15 543
    Par défaut
    Pour toi ce ne sera pas activedocument mais WdDoc, j'ai corrigé ma réponse

  13. #13
    Inscrit
    Inscrit en
    Octobre 2006
    Messages
    430
    Détails du profil
    Informations forums :
    Inscription : Octobre 2006
    Messages : 430
    Points : 87
    Points
    87
    Par défaut
    yes sa marchais pas et maintenant sa marche serieux tro fort tu es mon ami mdr allez bonne continuation et merci beaucoup

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Propriétés hauteur et largeur d'une image téléchargée
    Par Mister Paul dans le forum Langage
    Réponses: 1
    Dernier message: 26/02/2010, 14h52
  2. Modification hauteur et largeur d'une image suite à un double-click sur une autre image
    Par LorenzoIlMagnifico dans le forum Général JavaScript
    Réponses: 6
    Dernier message: 18/11/2009, 16h10
  3. Réponses: 2
    Dernier message: 18/02/2008, 22h04
  4. Réponses: 11
    Dernier message: 25/02/2007, 01h56
  5. [IMAGE] Comment obtenir hauteur largeur d'une image ??
    Par pouillou dans le forum AWT/Swing
    Réponses: 3
    Dernier message: 05/05/2006, 21h38

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