Ouverture UserForm sur excel2007

cs_vodkaddict Messages postés 6 Date d'inscription mardi 13 avril 2010 Statut Membre Dernière intervention 19 avril 2010 - 14 avril 2010 à 11:56
cs_vodkaddict Messages postés 6 Date d'inscription mardi 13 avril 2010 Statut Membre Dernière intervention 19 avril 2010 - 14 avril 2010 à 15:10
bonjour,

J'ai une petite question, j'ai créée une userform qui s'exécute à l'aide d'un ptit icone, savez vous s'il est possible d'exécuter celle ci juste en double cliquant sur une case excel ?

Merci d'avance

4 réponses

cs_GG29 Messages postés 326 Date d'inscription vendredi 23 décembre 2005 Statut Membre Dernière intervention 8 février 2011 17
14 avril 2010 à 13:58
Oui c'est possible
http://forum.hardware.fr/hfr/Programmation/VB-VBA-VBS/excel-vba-double-sujet_90086_1.htm


---
Généralement le bug se situe entre le clavier et la chaise.
Le temps est une "chose" introuvable dont l'existence ne fait aucun doute.
0
cs_vodkaddict Messages postés 6 Date d'inscription mardi 13 avril 2010 Statut Membre Dernière intervention 19 avril 2010
14 avril 2010 à 14:59
Merci cela ma beaucoup aidé!

Par contre j'ai un ptit soucis, je me sers de ce programme pour ouvrir une UserForm avec 3 choix de sélection, le 1er choix influence le 2ème qui lui même influence le 3ème.

Le problème c'est que quand je double sur ma feuille ("D1"), l'UF se lance, j'ai mes 3 liste déroulante et mon bouton "valider" mais quand je veux pour choisir mon 1er choix, ma liste déroulante est vide... et je ne vois pas pourquoi :s.

Voici ce qu'il y a dans "D1"
Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
     On Error Resume Next
     If IsEmpty(ActiveCell.Value) Then
      UserForm9.Show
      ActiveCell.Value = ComboBox2.Text
     ElseIf ActiveCell.Value = "X" Then
      ActiveCell.Value = ""
     End If
Cancel = True
End Sub


Dans mon UF(n°9)
Private Sub UserForm_click()

ComboBox3.Rowsource = "Feuil10!F11:F12" 'Récupération des Données à partir de la feuille 10, 2 choix possible : Module/onduleur
If ComboBox3.Text = "Module" Then

        Option Explicit

            'La sélection du ComboBox1 (données colonne B) définit le contenu du ComboBox2 (données colonne 1)
                    
        Dim TabTemp As Variant
        Dim L As Long
            'Mémorise les données dans un tableau variant temporaire
            With Sheets("Module")
                L = .Cells(.Rows.Count, 1).End(xlUp).Row
                TabTemp = .Range(.Cells(2, 1), .Cells(L, 3)).Value
        End With
           'Remplir ComboBox1
            RemplirCbo 1, ""
Else
        Dim L As Long
            'Mémorise les données dans un tableau variant temporaire
            With Sheets("Onduleur")
                L = .Cells(.Rows.Count, 1).End(xlUp).Row
                TabTemp = .Range(.Cells(2, 1), .Cells(L, 3)).Value
            End With
            'Remplir ComboBox1
            RemplirCbo 1, ""
End Sub
        
Private Sub ComboBox1_Change()
Dim x As String
    'Remplir Combo2
    RemplirCbo 2, ComboBox1.Text
    x = ComboBox2.Text
    
End Sub

Private Sub RemplirCbo(Id As Byte, T As String)

Dim Col As New Collection   'gestion doublons
Dim Cbo As Control
Dim L As Long
    'RAZ ComboBox
    For L = 2 To Id Step -1
        Controls("Combobox" & L).Clear
    Next L
    'MAJ ComboBox (sans doublon)
    Set Cbo = Controls("Combobox" & Id)
    For L = 1 To UBound(TabTemp, 1)
        If TabTemp(L, 2) <> "" Then 'Pour éviter les lignes de titre
            If Id = 1 Then  'Pour la première ComboBox
                TabTemp(L, 3) = 1
                On Error Resume Next
                Col.Add TabTemp(L, 2), CStr(TabTemp(L, 2))
                On Error GoTo 0
                If Col.Count > Cbo.ListCount Then Cbo.AddItem TabTemp(L, 2)
            Else            'Pour la suivante
                If TabTemp(L, Id) = T Then
                    If TabTemp(L, 3) = 1 Then
                        On Error Resume Next
                        Col.Add TabTemp(L, 1), CStr(TabTemp(L, 1))
                        On Error GoTo 0
                        If Col.Count > Cbo.ListCount Then Cbo.AddItem TabTemp(L, 1)
                    End If
                End If
            End If
        End If
    Next L
End Sub

Sub CommandButton1_Click()

    'MsgBox "Modèle choisi = " & ComboBox2.Text
   ' Sheets("D1").Select
    'Range("B49").Select
    ActiveCell.Value = ComboBox2.Text
    Unload userform1
End Sub


ComboBox3 = C'est mon 1er choix
ComboBox1 = C'est mon 2ème choix
ComboBox2 = C'est mon 3ème choix, celui que je veux retourner sur la case ou je double clic

Si quelqu'una une idée... Merci d'avance!
0
cs_GG29 Messages postés 326 Date d'inscription vendredi 23 décembre 2005 Statut Membre Dernière intervention 8 février 2011 17
14 avril 2010 à 15:05
Pourrais-tu reposter ton code. La balise est [code=vb] et e

---
Généralement le bug se situe entre le clavier et la chaise.
Le temps est une "chose" introuvable dont l'existence ne fait aucun doute.
0
cs_vodkaddict Messages postés 6 Date d'inscription mardi 13 avril 2010 Statut Membre Dernière intervention 19 avril 2010
14 avril 2010 à 15:10
Merci cela ma beaucoup aidé!

Par contre j'ai un ptit soucis, je me sers de ce programme pour ouvrir une UserForm avec 3 choix de sélection, le 1er choix influence le 2ème qui lui même influence le 3ème.

Le problème c'est que quand je double sur ma feuille ("D1"), l'UF se lance, j'ai mes 3 liste déroulante et mon bouton "valider" mais quand je veux pour choisir mon 1er choix, ma liste déroulante est vide... et je ne vois pas pourquoi :s.

Voici ce qu'il y a dans "D1"
Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean) 
On Error Resume Next 
If IsEmpty(ActiveCell.Value) Then 
UserForm9.Show 
ActiveCell.Value = ComboBox2.Text 
ElseIf ActiveCell.Value = "X" Then 
ActiveCell.Value = "" 
End If 
Cancel = True 
End Sub 


Dans mon UF(n°9)
Private Sub UserForm_click() 

ComboBox3.Rowsource = "Feuil10!F11:F12" 'Récupération des Données à partir de la feuille 10, 2 choix possible : Module/onduleur 
If ComboBox3.Text = "Module" Then 

Option Explicit 

'La sélection du ComboBox1 (données colonne B) définit le contenu du ComboBox2 (données colonne 1) 

Dim TabTemp As Variant 
Dim L As Long 
'Mémorise les données dans un tableau variant temporaire 
With Sheets("Module") 
L = .Cells(.Rows.Count, 1).End(xlUp).Row 
TabTemp = .Range(.Cells(2, 1), .Cells(L, 3)).Value 
End With 
'Remplir ComboBox1 
RemplirCbo 1, "" 
Else 
Dim L As Long 
'Mémorise les données dans un tableau variant temporaire 
With Sheets("Onduleur") 
L = .Cells(.Rows.Count, 1).End(xlUp).Row 
TabTemp = .Range(.Cells(2, 1), .Cells(L, 3)).Value 
End With 
'Remplir ComboBox1 
RemplirCbo 1, "" 
End Sub 

Private Sub ComboBox1_Change() 
Dim x As String 
'Remplir Combo2 
RemplirCbo 2, ComboBox1.Text 
x = ComboBox2.Text 

End Sub 

Private Sub RemplirCbo(Id As Byte, T As String) 

Dim Col As New Collection 'gestion doublons 
Dim Cbo As Control 
Dim L As Long 
'RAZ ComboBox 
For L = 2 To Id Step -1 
Controls("Combobox" & L).Clear 
Next L 
'MAJ ComboBox (sans doublon) 
Set Cbo = Controls("Combobox" & Id) 
For L = 1 To UBound(TabTemp, 1) 
If TabTemp(L, 2) <> "" Then 'Pour éviter les lignes de titre 
If Id = 1 Then 'Pour la première ComboBox 
TabTemp(L, 3) = 1 
On Error Resume Next 
Col.Add TabTemp(L, 2), CStr(TabTemp(L, 2)) 
On Error GoTo 0 
If Col.Count > Cbo.ListCount Then Cbo.AddItem TabTemp(L, 2) 
Else 'Pour la suivante 
If TabTemp(L, Id) = T Then 
If TabTemp(L, 3) = 1 Then 
On Error Resume Next 
Col.Add TabTemp(L, 1), CStr(TabTemp(L, 1)) 
On Error GoTo 0 
If Col.Count > Cbo.ListCount Then Cbo.AddItem TabTemp(L, 1) 
End If 
End If 
End If 
End If 
Next L 
End Sub 

Sub CommandButton1_Click() 

'MsgBox "Modèle choisi = " & ComboBox2.Text 
' Sheets("D1").Select 
'Range("B49").Select 
ActiveCell.Value = ComboBox2.Text 
Unload userform1 
End Sub 


ComboBox3 = C'est mon 1er choix
ComboBox1 = C'est mon 2ème choix
ComboBox2 = C'est mon 3ème choix, celui que je veux retourner sur la case ou je double clic

Si quelqu'una une idée... Merci d'avance!

[Je n'ai pas trouvé la fonction EDIT, un modo peut supprimer mon post d'avant, se serait sympas ^^]
0
Rejoignez-nous