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 :

Alimentation d'un fichier Excel à partir de données Powerpoint


Sujet :

Macros et VBA Excel

  1. #21
    Invité
    Invité(e)
    Par défaut
    Re

    On ne peut le faire directement qu'à partir de la version 2007, avant il faut passer par du VBA, si tu es sur PPT 2007 tu as également l'explication dans la FAQ pour le faire manuellement.

    Dans la FAQ tu peux trouver également un complément à installer qui donne le même effet, mais plus simple à utiliser pour des non initiés, c'est comme si c'était une fonction intégrée.

    Philippe

  2. #22
    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
    Par défaut
    Citation Envoyé par alex
    J'ai essayé vbcrlf mais ça n'a pas l'air de marcher
    Teste avec vblf et avec vbcr (= chr(13)
    Citation Envoyé par alex
    MsgBox titre_pp(0)
    [/CODE]Dans la MsgBox, j'ai le titre complet!!! au lieu d'avoir que la première ligne
    Si tu as toujours la même chose avec les deux que je t'indique, alors c'est simple, ton titre est sur une ligne et ne s'étend sur la seconde ligne dans PowerPoint que parce qu'il est trop long pour tenir sur une ligne.
    Pour vérifier, dans PowerPoint, allonge la boîte de texte contenant le titre.
    Il est aussi possible que, pour obtenir ce résultat, l'auteur du document PPT ait ajouté des espaces ou une tabulation...
    Commence par tester avec vblf, on verra pour la suite.
    A+

  3. #23
    Membre confirmé
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    99
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2005
    Messages : 99
    Par défaut
    Je suis tout à fait d'accord avec toi. Toutefois, le texte est bien sur 2 lignes et j'ai même enregistré une new version en faisait entrée et une autre maj+entrée
    Mais ça ne change rien...

    Quand j'affiche pourtant ma variable en debug, j'ai le texte suivant:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    Nom clientrésumé
    Le petit doit représenter le saut de ligne et malgré tout, la fonction split ne semble pas reconnaître ce saut de ligne.

  4. #24
    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
    Par défaut
    Alors teste les caractères.
    Tiens, j'ai fait ça
    J'ai commencé par mettre un titre dans une textbox
    Blabla et c ’est un titre
    sur deux lignes
    Ensuite j'ai lancé le test suivant
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    Sub test()
    Dim i, result, texte
        ActiveWindow.Selection.SlideRange.Shapes(1).Select
        texte = ActiveWindow.Selection.ShapeRange.TextFrame.TextRange.Text
        For i = 1 To Len(texte)
           result = result & Mid(texte, i, 1) & " = " & Asc(Mid(texte, i, 1)) & vbCr
        Next
        MsgBox result
    End Sub
    et j'ai obtenu
    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
    B	 = 66
    l	 = 108
    a	 = 97
    b	 = 98
    l	 = 108
    a	 = 97
     	 = 32
    e	 = 101
    t	 = 116
     	 = 32
    c	 = 99
    *	 = 160
    ’	 = 146
    e	 = 101
    s	 = 115
    t	 = 116
     	 = 32
    u	 = 117
    n	 = 110
     	 = 32
    t	 = 116
    i	 = 105
    t	 = 116
    r	 = 114
    e	 = 101
     	 = 32
    	 = 11
    s	 = 115
    u	 = 117
    r	 = 114
     	 = 32
    d	 = 100
    e	 = 101
    u	 = 117
    x	 = 120
     	 = 32
    l	 = 108
    i	 = 105
    g	 = 103
    n	 = 110
    e	 = 101
    s	 = 115
    Bref, c'est chr(11) (!!!)
    J'aurais dû le savoir ? Ben non, je le savais pas

  5. #25
    Membre confirmé
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    99
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2005
    Messages : 99
    Par défaut
    J'obtiens pareil et en faisant un split sur chr(11) ça marche désormais!!!
    thanks!
    Je continue mon programme, j'ai bientôt fini grâce à votre aide!!!!!

    Reste à reconnaître si une shape est remplie par une couleur foncée ou non.
    A priori est-ce qqch de faisable ? Je voudrais chercher dans le diaporama toutes les shapes dont la couleur est > à jaune

  6. #26
    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
    Par défaut
    Avec un tableau des couleurs "foncées" ça devrait être "jouable"...
    Que te manque-t-il ? A quoi est appliquée la couleur ? Le Texte ? Le fond ? Le cadre ?

  7. #27
    Membre confirmé
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    99
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2005
    Messages : 99
    Par défaut
    Qu'entends tu par tableau de couleur foncées?

    La couleur est appliquée au fond de la shape.
    Avant de m'attaquer au couleurs foncées, j'ai tenté un test sur une seule couleur noir mais déjà ça ne compile pas

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    If ma_shape.Fill.BackColor = RGB(0,0,0)

  8. #28
    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
    Par défaut
    Edit
    Déjà tu peux tester les couleurs
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    Sub test()
    Dim Truc As Shape
        for each Truc In activeWindow.Selection.SlideRange.Shapes
            Truc.Select
            msgBox ActiveWindow.Selection.ShapeRange.Fill.ForeColor.RGB
        next
    end sub
    Ensuite tu établis ton tableau et avec un test sur > ou < valeur, facile !
    Une réflexion qui ne vaut que ce qu'elle vaut : Tu n'es pas au bout de tes peines avec plusieurs millions de couleurs
    Ceci dit, tu devrais trouver la logique des valeurs quelque part.
    Bonne chance

    Edit
    Je viens de voir ta réponse : Tu ne peux pas obtenir la valeur RGB des couleurs de cette manière et j'ignore comment connaître les trois variables.
    Ce que je peux te dire, c'est que "ActiveWindow.Selection.ShapeRange.Fill.ForeColor.RGB" n'est pas un tableau qui contiendrait les trois valeurs. C'est pourquoi je parlais de logique des couleurs. A quoi correspond la valeur obtenue (10027008 dans mon test)
    Est-ce un produit ? Comment peut-on le décortiquer ?
    Bon courage et si tu trouves quelque chose, ça vaudrait la peine que tu mettes ça ici
    A+

  9. #29
    Invité
    Invité(e)
    Par défaut
    Bonjour

    En théorie, le RGB te renvoie une donnée de type Long.

    Essayes ce code de la FAQ Access pour trouver le RGB : Comment retrouver les composantes rouge, verte, bleue d'un code couleur de type Long ?

    Philippe

  10. #30
    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
    Par défaut
    Merci Philippe, je n'en attendais pas moins de toi
    Donc, traduit en bon français pour que n'importe qui puisse le comprendre et l'appliquer sans trop de difficultés :
    La fonction
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    Function testcouleur(couleur As Long) As String
    Dim Rouge, vert, bleu
     
        red = &HFF& And couleur
        green = (&HFF00& And couleur) \ 256
        blue = (&HFF0000 And couleur) \ 65536
        testcouleur = "Rouge" & vbTab & "vert" & vbTab & "bleu" & vbCr & red & " " & vbTab & green & " " & vbTab & blue
     
    End Function
    L'appel
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    Sub test()
    Dim Truc As Shape
        For Each Truc In ActiveWindow.Selection.SlideRange.Shapes
            Truc.Select
            MsgBox testcouleur(ActiveWindow.Selection.ShapeRange.Fill.ForeColor.RGB)
        Next
    End Sub
    alex, tu devrais pouvoir te débrouiller avec ça

  11. #31
    Inactif  
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    2 054
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Juin 2007
    Messages : 2 054
    Par défaut
    Bonjour tous,
    A quoi correspond la valeur obtenue (10027008 dans mon test)
    Est-ce un produit ? Comment peut-on le décortiquer ?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
        'Ré initialiser la valeur en décimale
         TaCouleur = Rouge + (Vert * 256) + (Bleu * 65536)
        MsgBox "La couleur   " & TaCouleur & Chr(13) _
        & "ou en Hex :  &h" & Hex(TaCouleur), , "Retrouver couleur"
    A+

  12. #32
    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
    Par défaut
    Merci l'homme des bois mais je pense que le code que j'ai mis montre que j'avais compris...
    Mais c'est effectivement mieux en le disant pour comprendre le code

  13. #33
    Membre confirmé
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    99
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2005
    Messages : 99
    Par défaut
    Je suis tout à fait d'accord avec ce que vous avez dit.
    Toutefois, je pense qu'il faudrait utiliser le RGB tel que renvoyé sans le transformer... enfin s'il est possible de faire une telle comparaison.

    Par exemple, si je souhaite savoir si le fond de la shape est noire, je souhaiterais pouvoir faire cette comparaison :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    If ma_shape.Fill.ForeColor.RGB = RGB(0, 0, 0) Then
    Toutefois, quand la shape est noire:
    * ma_shape.Fill.ForeColor.RGB renvoie le fameux long 16777215
    * et RGB(0, 0, 0) renvoie 0

    Donc forcément le test ne marche jamais... peut être une conversion à faire?

    Edit... je me suis gourré dans mon test
    je testais le noir au lieu de tester le blanc!
    brefça marche parfaitement en faisant:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    If ma_shape.Fill.ForeColor.RGB = RGB(0, 0, 0) Then

  14. #34
    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
    Par défaut
    Chez moi, pour le noir j'ai bien un triple zéro (0, 0, 0)
    Teste ça
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    Sub test()
    Dim Truc As Shape
        For Each Truc In ActiveWindow.Selection.SlideRange.Shapes
            Truc.Select
            ActiveWindow.Selection.ShapeRange.Fill.ForeColor.RGB = RGB(0, 0, 0)
            MsgBox testcouleur(ActiveWindow.Selection.ShapeRange.Fill.ForeColor.RGB)
        Next
    End Sub
    Pour l'exploitation j'ai une idée. Je reviens

  15. #35
    Membre confirmé
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    99
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2005
    Messages : 99
    Par défaut
    Ca marche nickel

    Qu'entends tu "pour l'exploitation"?

  16. #36
    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
    Par défaut
    Par "" je n'entends pas grand chose
    Par contre, tu comptes bien exploiter les valeurs RVB... Comment comptes-tu t'y prendre ? Quelles sont tes références de couleurs ?
    A toutes fins utiles, tu sais que la fonction peut te retourner un tableau
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    Function testcouleur(couleur As Long) As Variant
    Dim Rouge, vert, bleu   
        red = &HFF& And couleur
        green = (&HFF00& And couleur) \ 256
        blue = (&HFF0000 And couleur) \ 65536
        testcouleur = Array(red, green, blue)
    End Function
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    Sub Appel()
    Dim Truc As Shape, Tablo As Variant
        For Each Truc In ActiveWindow.Selection.SlideRange.Shapes
            Truc.Select
            ActiveWindow.Selection.ShapeRange.Fill.ForeColor.RGB = RGB(0, 0, 0)
            Tablo = testcouleur(ActiveWindow.Selection.ShapeRange.Fill.ForeColor.RGB)
            'c'est ici que ça se passe
        Next
    End Sub

  17. #37
    Membre confirmé
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    99
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2005
    Messages : 99
    Par défaut
    Pour le moment, je fais le test sur une seule couleur, à savoir tout ce qui est différent du blanc, j'exécute un traitement.
    Par contre, si je pourrais dire si la couleur de couleur est supérieur à une certain couleur clair, dans ce cas je fais le traitement ça serait encore mieux.Mais là je sèche

  18. #38
    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
    Par défaut
    C'est de ça dont je parle.
    Si tu calcules la valeur rvb (le long) tu peux placer les valeurs de toutes les shapes dans un tableau à deux dimension (N° Shape, valeur) puis trier le tableau par ordre de grandeur de la valeur (le code est dans Contribuez)

    Si tu utilisais les trois valeurs, ce que je comprends pas bien c'est la différence que tu ferais entre (0, 255, 0) et (0, 0, 255) ou (255, 0, 0)
    Par les valeurs recalculées, comment dire que (255, 50, 0) est plus clair que (50, 50, 50) ou plus foncé que (244, 244, 244) ?
    Qu'est-ce que "plus clair" ou "plus foncé" ?

    Edit
    Tiens, comme tu n'auras pas résolu le problème avant que je parte en villégiature, voici toujours un motif de réflexion
    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
    Sub TiTest()
    Dim i As Integer, r As Byte, g As Byte, b As Byte, gauche As Integer, haut As Integer
        For i = 1 To 255
            gauche = gauche + 2
            haut = haut + 1
            ActiveWindow.Selection.SlideRange.Shapes.AddLabel(msoTextOrientationHorizontal, gauche, haut, 70, 200).Select
            ActiveWindow.Selection.TextRange.Text = "blabla"
            ActiveWindow.Selection.ShapeRange.Fill.Visible = msoTrue
            r = r + 1
            g = g + 1
            b = b + 1
            ActiveWindow.Selection.TextRange.Text = "r=" & r & vbCr & "g=" & g & vbCr & "b=" & b
            ActiveWindow.Selection.ShapeRange(1).Fill.ForeColor.RGB = RGB(r, g, b)
            DoEvents
        Next
    End Sub
    Amuse-toi bien

Discussions similaires

  1. Créer fichier Excel à partir des données d'un autre
    Par Pimon07 dans le forum API standards et tierces
    Réponses: 1
    Dernier message: 02/03/2015, 16h43
  2. Réponses: 2
    Dernier message: 20/03/2014, 10h09
  3. [AC-2003] Exporter plusieurs fichiers excel à partir des données d'une requête
    Par Daphnoxbow dans le forum Requêtes et SQL.
    Réponses: 6
    Dernier message: 06/10/2009, 11h41
  4. Créer un fichier texte à partir de données Excel
    Par Olorin56 dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 28/01/2008, 13h56
  5. Réponses: 1
    Dernier message: 27/01/2008, 06h23

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