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

Powerpoint Discussion :

utilisation des combobox ppt2010


Sujet :

Powerpoint

  1. #1
    Candidat au Club
    Homme Profil pro
    Ingénieur thermique
    Inscrit en
    Juillet 2017
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Vendée (Pays de la Loire)

    Informations professionnelles :
    Activité : Ingénieur thermique

    Informations forums :
    Inscription : Juillet 2017
    Messages : 4
    Points : 3
    Points
    3
    Par défaut utilisation des combobox ppt2010
    Bonjour à tous,

    j'aurais besoin de l'aide d'une personne sachant développer sous VBA pour powerpoint.
    je sais pas si c'est juste une impression mais ça me parait plus compliqué que VBA pour Excel...
    bref, voila mon problème:
    je souhaiterais qu'une combobox s'alimente en fonction d'une autre combobox et j'ai beau tout essayer je n'arrive pas à bien faire fonctionner le truc.
    j'ai une combobox (combo1) dans laquelle l'utilisateur doit choisir le service auquel il appartient. il y a 5 choix (conditionnement, fabrication, magasin energie, infrastructure). En fonction de ce choix, j'ai des tableaux qui sont préremplis dans le dernier slide avec les noms du personnel de chaque service. ex: pour le service energie, j'ai un tableau qui s'appelle "energie", qui a 4 lignes avec les noms des 4 personnes.
    et enfin j'ai un autre combobox (combo2) qui, en fonction du service qu'on a choisi au début, va permettre de choisir une personne de ce service. donc si j'ai choisi sur combo1 le service energie, sur combo2 je dois pouvoir selectionner une des 4 personnes de ce service...
    j'ai essayé un tas de truc hyper mal programmé car je ne suis pas familier avec VBA pour ppt mais il y a toujours des choses qui ne fonctionnent pas, un coup il m'additionne dans le combo2 les noms de tous les services, un coup je ne peux pas selectionner la personne...bref besoin d'aide.

    en fouillant un peu j'ai écrit un truc qui ressemble à ça, c'est très mal codé, les noms de variables sont nuls mais c'est une ébauche pour trouver comment ça marche ensuite je réécrirai au propre

    je récupère le secteur puis j'ai un "select case" en fonction du secteur puis:

    Case "Secteur administratif - magasin"

    compt = objSld.Shapes("magasin").Table.Rows.Count
    r = ComboBox6.ListCount

    If ComboBox6.ListCount = 0 Then

    For j = 1 To compt

    r = objSld.Shapes("magasin").Table.Cell(j, 1).Shape.TextFrame.TextRange.Text
    ComboBox6.AddItem r

    Next
    Else
    If ComboBox6.ListIndex > -1 Then ComboBox6.Text = ComboBox6.List(ComboBox6.ListIndex)

    End If

    merci pour votre aide

  2. #2
    Invité
    Invité(e)
    Par défaut
    Citation Envoyé par Redame Voir le message
    Bonjour,

    A tester et à adapter :

    Dans un module standard :

    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
     
    Option Explicit
     
    Public MatriceShape() As Variant
     
    Sub Essai()
     
    Dim PresentationEncours As Presentation
    Dim MaComboBox1 As Object, MaComboBox2 As Object
    Dim ContenuCombo1 As Variant
     
        Set PresentationEncours = ActivePresentation
        With PresentationEncours
     
             Set MaComboBox1 = .Slides(1).Shapes("ComboBox1").OLEFormat.Object
             ContenuCombo1 = Array("Conditionnement", "Fabrication", "Magasin", "Energie", "Infrastructure")
     
             Set MaComboBox2 = .Slides(1).Shapes("ComboBox2").OLEFormat.Object
     
             With MaComboBox1
                  .Clear
                  .List = ContenuCombo1
             End With
             MaComboBox2.Clear
     
             Set MaComboBox1 = Nothing
             Set MaComboBox2 = Nothing
     
         End With
         Set PresentationEncours = Nothing
     
     
    End Sub
     
     
    Sub ChargerLaComboBox2(ByVal NumeroSlide As Integer, ByVal TitreShape As String)
     
    Dim I As Integer
    Dim Matable As Table
    Dim Continuer As Boolean
    Dim IndiceTable As Integer
     
     
        With ActivePresentation.Slides(NumeroSlide).Shapes
             Continuer = False
             For I = 1 To .Count
                 If .Item(I).HasTable Then
                  Set Matable = ActivePresentation.Slides(NumeroSlide).Shapes(I).Table
                    If Matable.Cell(1, 1).Shape.TextFrame.TextRange = TitreShape Then
                       IndiceTable = I
                       Continuer = True
                    End If
                Set Matable = Nothing
                 End If
             Next I
             If Continuer = True Then
                Set Matable = ActivePresentation.Slides(NumeroSlide).Shapes(IndiceTable).Table
                With Matable
                     ReDim MatriceShape(Matable.Columns(1).Cells.Count - 2)
                     For I = 2 To Matable.Columns(1).Cells.Count
                         MatriceShape(I - 2) = Matable.Cell(I, 1).Shape.TextFrame.TextRange
                     Next I
                End With
                Set Matable = Nothing
             End If
        End With
     
    End Sub
    Dans le module du Slide 1

    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
    Option Explicit
     
    Private Sub ComboBox1_Change()
     
    Dim J As Integer
     
        ChargerLaComboBox2 4, ComboBox1
     
        ComboBox2.Clear
     
        If UBound(MatriceShape, 1) > 0 Then
           For J = LBound(MatriceShape, 1) To UBound(MatriceShape, 1)
               With ComboBox2
                    .AddItem MatriceShape(J)
                    .ListIndex = 0
               End With
           Next J
        End If
     
    End Sub
    Le slide 1

    Pièce jointe 297238

    Le slide 4

    Important : Le premier enregistrement de chaque table correspond à un item de la Combobox1. C'est par cette valeur que la table correspondante est trouvée.

    Pièce jointe 297233

  3. #3
    Candidat au Club
    Homme Profil pro
    Ingénieur thermique
    Inscrit en
    Juillet 2017
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Vendée (Pays de la Loire)

    Informations professionnelles :
    Activité : Ingénieur thermique

    Informations forums :
    Inscription : Juillet 2017
    Messages : 4
    Points : 3
    Points
    3
    Par défaut
    Bonjour, jai testé et ça marche nickel!
    C'est quand même plus simple sous Excel
    Merci beaucoup !!!

Discussions similaires

  1. utilisation des combobox
    Par wesloff dans le forum Composants VCL
    Réponses: 8
    Dernier message: 06/04/2010, 20h03
  2. Utilisation des ComboBox
    Par furiousdraz dans le forum GTK+ avec C & C++
    Réponses: 3
    Dernier message: 15/07/2008, 18h23
  3. Problème d'utilisation des ComboBox
    Par CyberSlan dans le forum MFC
    Réponses: 8
    Dernier message: 06/06/2008, 16h12
  4. Construire un critère de filtre en utilisant des ComboBox
    Par mary17 dans le forum Windows Forms
    Réponses: 7
    Dernier message: 20/04/2007, 09h19
  5. Questions concernant l'utilisation des ComboBox
    Par philguio dans le forum Windows Forms
    Réponses: 2
    Dernier message: 09/01/2007, 11h26

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