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 :

[VBA-E] Problème Select case


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Étudiant
    Inscrit en
    Mai 2006
    Messages
    73
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2006
    Messages : 73
    Par défaut [VBA-E] Problème Select case
    Bonjour,
    j'ai recherché dans les tutos et dans les formus une aide à mon problème mais je n'ai pas trouvé comment le résoudre.
    Je m'explique. je dispose d'une userform dans laquelle j ai placé un objet multipage au sein duquel j ai placé un autre objet multipage. Je sais que si je fait select case base.SelectedItem.name et case "page1" ... je peux renvoyer les données entrées dans mon interface dans une feuille excel. Mais la il faut que je selectionne un onglet puis que je fasse case "petit onglet" etc..
    Est il possible de faire deux select case à la suite(j'ai essayé et ca ne fonctionne pas mais l'erreur vient surement de moi) ou y a t'il une solution pour que les données entrées dans la userform soient renvoyées sur ma feuille excel?
    J'espère avoir été claire. Si ce n'est pas le cas et que vous voulez plus de détails dites le moi.
    Merci.

  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
    Par défaut
    Citation Envoyé par jamelie
    J'espère avoir été claire. Si ce n'est pas le cas et que vous voulez plus de détails dites le moi.
    Tu serais encore plus claire si tu mettais ton bout de code concernant tes essais. A s'rait 'âchement plus facile pour nous de voir, voire corriger, ton erreur On ne serait pas obliger d'inventer des noms de feuilles, d'onglets et autres variables
    A+

  3. #3
    Membre confirmé
    Profil pro
    Étudiant
    Inscrit en
    Mai 2006
    Messages
    73
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2006
    Messages : 73
    Par défaut
    voici un bout de mon 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
     
    Private Sub base_change()
     
    If Controle_Donnees(CurrentPanelNo) = False Then Exit Sub
    If Not (PremiereOuverture) Then Sauvegarde (CurrentPanelNo) Else PremiereOuverture = False
     
    CurrentPanelNo = base.SelectedItem.Index
     
    With BDD1
    ' BDD1 est ma feuille excel ou sont renvoyées les données
    Select Case base.SelectedItem.Name
        Case "page1":
        Select Case MultiPage2.SelectedItem.Name
            Case "Page4":
                PRE100.Text = .Cells(Date1Row, 4)
                PRE101.Text = .Cells(Date1Row, 7)
                PRE102.Text = .Cells(Date1Row, 10)
                PRE103.Text = .Cells(Date1Row, 13)
                ...
        End Select
    End Select
    End With
    End Sub
    En espérant que ca aidera.

  4. #4
    Membre confirmé
    Profil pro
    Étudiant
    Inscrit en
    Mai 2006
    Messages
    73
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2006
    Messages : 73
    Par défaut
    je me suis trompée de code. j'ai envoyé celui qui sert à faire réapparaitre les données lors du lancement. le bon code c'est celui-ci:
    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
     
    Private Sub Sauvegarde(PanelIndex As Integer)
     
    With BDD1
       Select Case base(PanelIndex).Name
          Case "page1":
          Select Case MultiPage2(PanelIndex).Name
            Case "Page4":
                .Cells(Date1Row, 4) = PRE100.Text
                .Cells(Date1Row, 7) = PRE101.Text
                .Cells(Date1Row, 10) = PRE102.Text
                ...
           End select
    End Select
    End with
    End sub
    Ca revient presque au même mais c'est l'inverse du code de tout à l'heure.
    Sorry

  5. #5
    Membre confirmé
    Profil pro
    Étudiant
    Inscrit en
    Mai 2006
    Messages
    73
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2006
    Messages : 73
    Par défaut
    ca fonctionne si je mets ca:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    Private Sub Sauvegarde(PanelIndex As Integer)
     
    With BDD1
       For Each ctrl In Me.base(PanelIndex).Controls
    If TypeName(ctrl) = "TextBox" Then
           Select Case MultiPage2(PanelIndex).Name
            Case "Page4":
                .Cells(Date1Row, 4) = PRE100.Text
                ...
    le problème c'est que ca me prend plus d'une minute pour enregistrer et ca me fait bugger l'ordi. en plus j'ai 200TextBox dans ma userform. Y a t'il un moyen d'éviter ca?
    Merci encore

  6. #6
    Membre Expert
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    1 567
    Détails du profil
    Informations personnelles :
    Âge : 62
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 1 567
    Par défaut
    salut
    j'ai une bonne nouvelle, j'ai trouvé pourquoi ton code ne fonctionne pas bien qu'il soit bien écris. j'ai fais ça
    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
    Private Sub CommandButton1_Click()
      
    With BDD1
       Select Case base(panelindex).SelectedItem
    '   MsgBox Case base(panelindex).SelectedItem
                    Case "printemps":
                                Select Case MultiPage2(panelindex).Name
                                  Case "avril":
                                      MsgBox "au printemps , en avril, c'est la sainte thérèse des angoisses"
                                  Case "mars"
                                      MsgBox " au printemps en mars , c'est à alsimbad qu'il faut souhaiter un bon anniversaire"
                                 Case "mai"
                                 MsgBox " au printemps en mai fais ce qu'il te plait"
                                 End Select
                    Case "hiver"
                    
                                Select Case MultiPage5(panelindex).Name
                                  Case "decembre":
                                      MsgBox "bientot noel"
                                  Case "janvier"
                                      MsgBox " je me met au régime"
                                 Case "fevrier"
                                 MsgBox " 2 jours de moins a bosser"
                                 End Select
    End Select
    End With
    End Sub
    je pense que le premier probleme de ton code c'est
    je dispose d'une userform dans laquelle j ai placé un objet multipage (appelons le A)au sein duquel j ai placé un autre objet multipage. (appelons le B)
    ells ont beau se ressembler, la multipage B que tu a placé sur le premier onglet du multipage A ne peut pas porter le même nom que celle que tu as placer sur le deuxieme, donc ta boucle qui l'appelle muticase2 ne vas pas le trouvé
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    Select Case base(PanelIndex).Name
          Case "page1":
          Select Case MultiPage2(PanelIndex).Name
            Case "Page4":
    mais en plus, ta boucle comme la mienne lui demande d'agir selon le cas du nom de l'onglet, mais rien ne lui dis que c'est l'onglet selectionné et donc a chaque fois, il analyse le premier onglet même si ce n'est pas celui sur lequel tu te trouve.
    par contre , mauvaise nouvelle, je n'ai pas trouvé la solution. du moins, j'ai dégrossi le sujet, je vois coment ça devrais marcher mais je ne capte pas le pourquoi ça ne marche pas. dans l'aide j'ai trouvé ça
    SelectedItem, propriété, TabStrip, contrôle, Tab, objet, Tabs, collection, exemple
    L'exemple suivant accède de plusieurs façons à un onglet d'un contrôle TabStrip à l'aide :
    de la collection Tabs et d'un index numérique,
    de la collection Tabs et d'un index de chaîne,
    de la collection Tabs et de la méthode Item,
    du nom d'un contrôle Tab individuel,
    de la propriété SelectedItem.
    Pour utiliser cet exemple, copiez le code suivant dans la partie Déclarations d'une feuille et vérifiez que celle-ci contient un contrôle TabStrip nommé TabStrip1.
    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
    Private Sub UserForm_Initialize()
        Dim TabName As String
    For i = 0 To TabStrip1.Count - 1
            'Using index (numeric or string)
            MsgBox "TabStrip1.Tabs(i).Caption = " _
                & TabStrip1.Tabs(i).Caption
            MsgBox "TabStrip1.Tabs.Item(i).Caption = " _
                & TabStrip1.Tabs.Item(i).Caption
            TabName = TabStrip1.Tabs(i).Name
            MsgBox "TabName = " & TabName
            MsgBox "TabStrip1.Tabs(TabName).Caption = " _
                & TabStrip1.Tabs(TabName).Caption
            MsgBox "TabStrip1.Tabs.Item(TabName)_
                .Caption = " _
                & TabStrip1.Tabs.Item(TabName).Caption
     'Use Tab object without referring to Tabs
              'collection
            If i = 0 Then
                MsgBox "TabStrip1.Tab1.Caption = " _
                        & TabStrip1.Tab1.Caption
            ElseIf i = 1 Then
                MsgBox "TabStrip1.Tab2.Caption = " _
                        & TabStrip1.Tab2.Caption
            EndIf
     'Use SelectedItem Property
            TabStrip1.Value = i
            MsgBox "TabStrip1.SelectedItem.Caption = " _
                & TabStrip1.SelectedItem.Caption
        Next i
    End Sub
    et le probleme c'est que tabs(i) provoque une erreur 438, methode ou propriété non géré par cet objet, et que du coup, je ne vois pas comment aller plus loin.

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

Discussions similaires

  1. Problème SELECT, CASE et Group by
    Par Royd938 dans le forum MS SQL Server
    Réponses: 9
    Dernier message: 03/10/2014, 07h41
  2. Problème Select case ne prend pas en compte les données
    Par gogo850 dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 29/06/2012, 10h42
  3. [XL-2003] Problème Select Case multiples
    Par Estimea dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 06/01/2011, 10h29
  4. [VB .NET] problème Select Case
    Par KrusK dans le forum VB.NET
    Réponses: 2
    Dernier message: 05/01/2007, 10h59
  5. []Problème avec un "Select Case" : Instructions et..
    Par Olun dans le forum VB 6 et antérieur
    Réponses: 11
    Dernier message: 07/09/2005, 13h32

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