formulaire de saisie, combobox fonctionne pas

jardibot

XLDnaute Junior
Bonjour,

Dans mon formulaire de saisie (il y a 33 textbox, des labels, un combobox, deux frames avec des optionbutton). Je n'ai pas renommé les textbox ni combobox). J'ai un bouton 'Modifier', et "Ajouter contact" et Quitter.


Mon 'combobox1' (le seul que j'ai), ne fonctionne pas.

Pourriez-vous m'aidez à trouver l'erreur?

De plus, lors de la saisie des optionbutton, il y a une erreur aussi… que je ne trouve pas. Merci de m'aidez

Code:
Option Explicit
Dim Ws As Worksheet
Private Sub UserForm1_Initialize()
Dim J As Long
Dim I As Integer

  Set Ws = Sheets("FICHE_INSCRIPTION") '
  With Me.ComboBox1
    For J = 2 To Ws.Range("C" & Rows.Count).End(xlUp).Row
      .AddItem Ws.Range("C" & J)
    Next J
  End With
  For I = 1 To 33
    Me.Controls("TextBox" & I).Visible = True 'affiche les données dans les textbox
Next I
End Sub
Private Sub ComboBox1_Change()
Dim Ligne As Long
Dim I As Integer
   If Me.ComboBox1.ListIndex = -1 Then Exit Sub
  Ligne = Me.ComboBox1.ListIndex + 2
  For I = 1 To 33
    Me.Controls("TextBox" & I) = Ws.Cells(Ligne, I + 2)
  Next I
 End Sub
Private Sub BT_MODIFIER_Click()
Dim Ligne As Long
Dim I As Integer
If MsgBox("Etes-vous certain de vouloir modifier ce produit ?", vbYesNo, "Demande de confirmation") = vbYes Then

  If Me.ComboBox1.ListIndex = -1 Then Exit Sub
  Ligne = Me.ComboBox1.ListIndex + 2
  For I = 1 To 33
    If Me.Controls("TextBox" & I).Visible = True Then
      Ws.Cells(Ligne, I + 2) = Me.Controls("TextBox" & I)
    End If
  Next I
    End If
End Sub
Private Sub BT_QUITTER_Click()
Unload UserForm1
End Sub

Private Sub BT_AJOUTER_CONTACT_Click()
Dim L As Integer, lieu_inscription As String, civilite As String

If MsgBox("Etes-vous certain de vouloir INSERER ce nouveau contact ?", vbYesNo, "Demande de confirmation") = vbYes Then
L = Sheets("FICHE_INSCRIPTION").Range("a65536").End(xlUp).Row + 1 'Permet de se positionner sur la dernière ligne de tableau NON VIDE

'Choix lieu et civilite
For Each bouton_lieu_inscription In Frame_lieu_inscription.Controls
    If bouton_lieu_inscription.Value Then
      lieu_inscription = bouton_lieu_inscription.Caption
    End If
Next
For Each bouton_civilite In Frame_civilite.Controls
    If bouton_civilite.Value Then
      civilite = bouton_civilite.Caption
    End If
Next


Range("A" & L).Value = lieu_inscription
Range("B" & L).Value = civilite
Range("C" & L).Value = ComboBox1
Range("D" & L).Value = TextBox1
Range("E" & L).Value = TextBox2
Range("F" & L).Value = TextBox3
Range("G" & L).Value = TextBox4
Range("H" & L).Value = TextBox5
Range("I" & L).Value = TextBox6
Range("J" & L).Value = TextBox7
Range("K" & L).Value = TextBox8
Range("L" & L).Value = TextBox9
Range("M" & L).Value = TextBox10
Range("N" & L).Value = TextBox11
Range("O" & L).Value = TextBox12
Range("P" & L).Value = TextBox13
Range("Q" & L).Value = TextBox14
Range("R" & L).Value = TextBox15
Range("S" & L).Value = TextBox16
Range("T" & L).Value = TextBox17
Range("U" & L).Value = TextBox18
Range("V" & L).Value = TextBox19
Range("W" & L).Value = TextBox20
Range("X" & L).Value = TextBox21
Range("Y" & L).Value = TextBox22
Range("Z" & L).Value = TextBox23
Range("AA" & L).Value = TextBox24
Range("AB" & L).Value = TextBox25
Range("AC" & L).Value = TextBox26
Range("AD" & L).Value = TextBox27
Range("AF" & L).Value = TextBox28
'Range("AE" & L).Value = TextBox_Description_Traitement
'Range("AG" & L).Value = TextBox_Vaccinations
Range("AH" & L).Value = TextBox29
'Range("AI" & L).Value = TextBox_Allergies
Range("AJ" & L).Value = TextBox30
'Range("AK" & L).Value = TextBox_Regime_Alimentaire
Range("AL" & L).Value = TextBox31
Range("AM" & L).Value = TextBox32
'Range("AN" & L).Value = TextBox_Droit_Image
'Range("AO" & L).Value = TextBox_Droit_Depart
Range("AP" & L).Value = TextBox33
End If

MsgBox ("Produit inséré dans fichier sélectionné") 'Vous informe que le présent contact est insérer dans votre tableau Excel.

Unload Me 'Ferme le formulaire
UserForm1.Show 'Ouvre le formulaire

'Après insertion, on remet les valeurs initiales
OptionButton1.Value = True

End Sub
 

Pièces jointes

  • SUPPORT_003.xlsm
    35 KB · Affichages: 105

jardibot

XLDnaute Junior
Re : formulaire de saisie, combobox fonctionne pas

Mr Boisgontier

Merci pour vos explications. J'ai rééssayé sur mon Mac mais à chaque clic sur un filtre le programme excel se ferme. Peut-être une fonction ou un code n'est pas compatible avec Mac. Je ne sais pas..

Sur Windows tout fonctionne très bien. Et les modifications que vous avez fait sont encore mieux. Pour vraiment que tout soit encore plus parfait,

- j'ai mis un combobox près du bouton "résultats", l'idée est d'avoir le nom des feuilles Résultat, Résultat2, Résultat3, Résulats4. Lorsque l'on sélectionne l'une d'elle, et que l'on clic sur "résultat", le "résultat du filtre est envoyé sur la feuille sélectionnée dans le combobox.

- j'ai mis un bouton "supprime la ligne sélectionnée", l'idée serait lorsque l'on sélectionne une ligne de la listbox, elle est supprimée de celle-ci mais aussi définitivement de la feuille "BD"

Voilà, tout serait parfait.Merci à vous.
 

Pièces jointes

  • FormCascadeOrdreQQ3ListBoxMac -exemple 555.xlsm
    134.6 KB · Affichages: 45

BOISGONTIER

XLDnaute Barbatruc
Repose en paix
Re : formulaire de saisie, combobox fonctionne pas

Voir PJ

Pour la compatibilité MAC, je verrais +tard.

http://boisgontierjacques.free.fr/fichiers/Formulaire/FormCascadeOrdreQQ3ListBoxMac2.xls

filtre.jpg

*Le lien entre les colonnes critères de la BD et le formulaire est fait par les labels associés aux comboBoxs et les titres de la BD:

-Label1 contient Nom_Enfant, Label2 contient Civilité, Label3 contient Traitement_medical, Label4 contient Vaccin
-Visu1 contient Prenom_Enfant, Visu2 contient Classe, Visu3 contient N°Rue1, Visu4 contient Commune1

*L'ordre d'apparition des champs dans la LISTBOX est donné dans la propriété TAG des labels qui définissent les noms des champs (Label1,Label2,..... Visu1,Visu2,...):

-Label1 contient 1,Visu1 contient 2,Label2 contient 3, Visu2 contient 4, Visu3 contient 5


JB
 

Pièces jointes

  • FormCascadeOrdreQQ3ListBoxMac2.xls
    196.5 KB · Affichages: 61
  • FormCascadeOrdreQQ3ListBoxMac2.xls
    196.5 KB · Affichages: 74
  • FormCascadeOrdreQQ3ListBoxMac2.xls
    196.5 KB · Affichages: 71
  • filtre.jpg
    filtre.jpg
    23.2 KB · Affichages: 90
  • filtre.jpg
    filtre.jpg
    23.2 KB · Affichages: 88
Dernière édition:

jardibot

XLDnaute Junior
Re : formulaire de saisie, combobox fonctionne pas

Bonjour Monsieur Boisgontier

Merci pour cette nouvelle aide et l'ajout de vos explications. Pour la compatibilité MAC, très bien j'attendrais :)

De mon côté, j'ai pu regrouper l'userform filtre avec mon formulaire. L'association des deux, c'est vraiment ce que je voulais!!

J'ai consulté votre site pour une recherche intuitive sur 2 colonnes, (Saisie intuitive caractère par caractère sur le 1er choix et 2eme Choix) , j'aurais aimé l'adapter à l'userform1 , pour le combobox (Nom_Enfant) et le combobox (Prenom_Enfant). Ainsi la recherche serait vraiment top. Mais c'est toujours pour une compatibilité MAC.. Je ne sais pas si c'est également possible?

Merci à vous
 

Pièces jointes

  • SUPPORT_V1O.2MAC_AVANCEE .xlsm
    74.7 KB · Affichages: 47
  • SUPPORT_V1O.2MAC_AVANCEE .xlsm
    74.7 KB · Affichages: 56
  • SUPPORT_V1O.2MAC_AVANCEE .xlsm
    74.7 KB · Affichages: 51

BOISGONTIER

XLDnaute Barbatruc
Repose en paix
Re : formulaire de saisie, combobox fonctionne pas

-Je n'ai mis la saisie intuitive que pour les noms (pour un nom, il n'y a que qq prénoms).
Pour le prénom, il y a par défaut l'autocompletion (si on frappe une ou plusieurs lettres, le prénom est affiché automatiquement)
-Double-clic pour tous les noms.

Code:
Dim f, ligne, choix1(), tblChoix1()
Private Sub UserForm_Initialize()
  Set f = Sheets("contact")
  choix1 = Application.Transpose(f.Range("A2:A" & f.[A65000].End(xlUp).Row).Value)
  tblChoix1 = SansDoublonsTriéMAC(choix1)
  Me.Nom_Enfant.List = tblChoix1
End Sub

Private Sub Nom_Enfant_Change()
If Me.Nom_Enfant.ListIndex = -1 And IsError(Application.Match(Me.Nom_Enfant, tblChoix1, 0)) Then
  ReDim tblChoix1(1 To UBound(choix1))
  tmp = UCase(Me.Nom_Enfant) & "*"
  ligne = 0
  For Each c In choix1
    If UCase(c) Like tmp Then ligne = ligne + 1: tblChoix1(ligne) = c
  Next c
  If ligne > 0 Then
    ReDim Preserve tblChoix1(1 To ligne)
    Me.Nom_Enfant.List = SansDoublonsTriéMAC(tblChoix1)
    Me.Nom_Enfant.DropDown
  End If
 Else
  Nom_Enfant_click
 End If
End Sub

Private Sub Nom_Enfant_click()
Dim K As Integer
Me.Prenom_Enfant.Clear
 For Each c In Me.Controls
       nom_control = c.Name
            col = Application.Match(nom_control, [titre], 0)
        Select Case TypeName(c)
          Case "TextBox"
             Me(nom_control).Value = ""
          'Case "CheckBox"
          Case "Frame"
          For Each opt In c.Controls
            If TypeName(opt) = "OptionButton" Then opt.Value = False
          Next opt
     End Select
   Next c
  a = f.Range("A2:B" & f.[B65000].End(xlUp).Row).Value
  Dim b(): ReDim b(1 To UBound(a))
  j = 0
  For i = 1 To UBound(a)
     If a(i, 1) = Me.Nom_Enfant Then j = j + 1: b(j) = a(i, 2)
  Next i
  ReDim Preserve b(1 To j)
  Call Tri(b, LBound(b), UBound(b))
  Me.Prenom_Enfant.List = b
  Me.Prenom_Enfant.SetFocus
  SendKeys "{f4}"
End Sub

Private Sub Nom_Enfant_DblClick(ByVal Cancel As MSForms.ReturnBoolean)
  Me.Nom_Enfant.List = SansDoublonsTriéMAC(choix1)
  Me.Nom_Enfant.DropDown
End Sub

http://boisgontierjacques.free.fr/fichiers/Formulaire/FormCascade2nivPcMacIntuitif.xls

JB
 

Pièces jointes

  • SUPPORT_V1O.2MAC_AVANCEEzz.xlsm
    74.1 KB · Affichages: 53
Dernière édition:

Dranreb

XLDnaute Barbatruc
Re : formulaire de saisie, combobox fonctionne pas

Bonsoir.

Informaton. J'ai écrit un module de classe ComboBoxLiées n'utilisant plus de Dictionary si ça vous intéresse.
Choix en ordre quelconque dans les ComboBox, leurs listes étant toujours classées, programmation minimaliste dans l'Userform.
 

Dranreb

XLDnaute Barbatruc
Re : formulaire de saisie, combobox fonctionne pas

Bonsoir.

Moi c'est Dranreb.
Alors voici le classeur actuel pour mes premiers tests.
 

Pièces jointes

  • CbxLiéesSsDico.xls
    210.5 KB · Affichages: 57
  • CbxLiéesSsDico.xls
    210.5 KB · Affichages: 57
  • CbxLiéesSsDico.xls
    210.5 KB · Affichages: 45

Dranreb

XLDnaute Barbatruc
Re : formulaire de saisie, combobox fonctionne pas

Bonjour.

Le classeur de développement et de test a un peu évolué.
J'ai repéré par hasard dans ma doc une constante de compilation conditionnelle Mac.
Veuillez me dire s'il marche immédiatement aussi bien sur Mac que sur PC.
 

Pièces jointes

  • CbxLiéesSsDico.xls
    207 KB · Affichages: 50
  • CbxLiéesSsDico.xls
    207 KB · Affichages: 64
  • CbxLiéesSsDico.xls
    207 KB · Affichages: 65

jardibot

XLDnaute Junior
Re : formulaire de saisie, combobox fonctionne pas

Mrs Boisgontier


J'ai testé les deux versions que vous m'avez envoyé. Le deuxième lien fonctionne sur MAC, il s'agit de FormCascade3NiveauxMAC-2. Je vous remercie. J'espère vous arriverez à l'adapter.

L'autre lui ne fonctionne pas et fait fermer excel tout seul.
 

BOISGONTIER

XLDnaute Barbatruc
Repose en paix
Re : formulaire de saisie, combobox fonctionne pas

Bonjour,

J'ai supposé que c'était l'événement DropButtonClick() qui posait un pb sur MAC. Je l'ai supprimé

A tester sur MAC

JB
 

Pièces jointes

  • SUPPORT_V1O.2MAC_AVANCEEzz22_3.xlsm
    79 KB · Affichages: 51
  • FormCascadeExcel2002_22_3.xls
    85.5 KB · Affichages: 50
Dernière édition:

jardibot

XLDnaute Junior
Re : formulaire de saisie, combobox fonctionne pas

Mr BOISGONTIER

Je profite pour vous demandez comment séparer le contenu d'une cellule en deux cellules mais pour MAC. J'ai consulté votre site mais pour MAC je n'ai pas trouvé.

Voilà j'ai une liste de plantes composées de deux noms (en colonne A), je souhaiterais les séparer sur deux colonnes (le premier mot en colonne B, et l'autre en colonne C). Merci à vous
 

Pièces jointes

  • Classeur1-2.xlsx
    8.5 KB · Affichages: 52
  • Classeur1-2.xlsx
    8.5 KB · Affichages: 49
  • Classeur1-2.xlsx
    8.5 KB · Affichages: 42

BOISGONTIER

XLDnaute Barbatruc
Repose en paix
Re : formulaire de saisie, combobox fonctionne pas

Bonjour,

=GAUCHE(A3;CHERCHE(" ";A3)-1)
=STXT(A3;CHERCHE(" ";A3)+1;99)

JB
 

Pièces jointes

  • Classeur1-2.xls
    27.5 KB · Affichages: 57
  • Classeur1-2.xls
    27.5 KB · Affichages: 77
  • Classeur1-2.xls
    27.5 KB · Affichages: 71

jardibot

XLDnaute Junior
Re : formulaire de saisie, combobox fonctionne pas

Mr BOISGONTIER

Je viens de voir votre formule, effectivement ça fonctionne mais quand je clic sur la cellule "Datura" , la formule affiche: =GAUCHE(A3;CHERCHE(" ";A3)-1 ainsi que si je vais sur la cellule "stramonium" : =STXT(A3;CHERCHE(" ";A3)+1;99)


Je souhaiterais qu'une fois que j'ai transféré tout sur deux colonnes, j'efface la colonne "A" (celle où il y a les deux mots) et que je puisse utiliser la cellule "B" et "C" normalement

ex: si je clic sur "Datura" seul le mot "Datura " est écrit. (Pas de formule ou fonction), si je clic sur "stramonium" seul le mot "stramonium" est écrit


Merci à vous!!! (Toujours pour MAC)
 

Membres actuellement en ligne

Statistiques des forums

Discussions
312 105
Messages
2 085 350
Membres
102 870
dernier inscrit
Armisa