[Excel-VBA] Base de données --> Formulaire

Résolu
alex90vba - 8 déc. 2012 à 14:35
 alex90vba - 12 déc. 2012 à 14:54
Bonjour tout le monde,

Je suis nouveau sur le forum donc j'espère avoir choisi la bonne catégorie pour mon message.

J'ai créé un formulaire (UserForm1) sous VBA pour Excel.
Ce formulaire contient des textbox, combobox, checkbox et cases d'option.
Il me permet de remplir une base de données clients sous Excel en récupérant
-le contenu de mes textbox et combobox ;
-les captions des checkbox (plusieurs choix possibles) ou cases d'option (un seul choix possible).

Je cherche maintenant à créer un deuxième formulaire (UserForm2 et copie du UserForm1 pour faire la manipulation inverse :

1) Je demande à l'utilisateur de sélectionner la première cellule de n'importe quelle ligne dans la base de données. Cette cellule contient le nom d'un client pour lequel j'ai rempli le formulaire. Les cellules à droite de celle du nom correspondent donc aux différents champs du formulaire que j'ai rempli (textbox, combobox, checkbox et cases d'option).

2) Je voudrais pouvoir charger le UserForm2 rempli en fonction des données dans le tableau. Ainsi les bonnes checkbox seront cochées, les textbox remplies et les bonnes cases d'option cochées.

3) Je vais modifier des données et les ré-enregistrer à la place des précédentes sur la même ligne du tableau afin d'éviter les doublons.


Voici mon problème :

Je n'arrive pas à comparer le contenu des cellules de mon tableau avec les captions de mes checkbox.
Si le contenu de la cellule est identique au caption d'une ou plusieurs checkbox, il faut cocher les checkbox en question.

Même raisonnement pour les boutons d'option, je souhaiterais comparer le contenu de la cellule aux captions des cases d'option et sélectionner la bonne.


Enfin je voudrais pouvoir ré-enregistrer le contenu du UserForm2 sur la même ligne de mon tableau Excel en remplacement des valeurs précédentes.

Voici une trame de code que j'ai effectuée mais qui ne fonctionne pas; si vous pouvez m'aider ?

Pour le moment la macro demande de sélectionner une ligne.
Ensuite j'essaie de récupérer le contenu d'une cellule associée à une frame avec plusieurs checkbox et de cocher les bonnes checkbox.



Private Sub UserForm_Initialize()
'la macro se lance à l'ouverture du formulaire

'Sélection de la cellule du client auquel on souhaite apporter des modifications
Dim macellule As Range
Dim i As Byte

Set macellule = Application.InputBox("Sélectionnez la cellule avec le nom du client.", "Sélection de cellules", Type:=8)

'Remplir les checkbox
Dim cible As String
cible = "A,B,C,D"

'A B C D correspondent aux captions des checkbox

'ici j'ai essayé plusieurs syntaxe de code :

'If Not InStr(cible, macellule.Offset(0, 2)) = 0 Then
'If Not InStr(macellule.Offset(0, 2), cible) = 0 Then
If InStr(macellule.Offset(0, 2), cible) > 0 Then

With Me.frame1
For i = 6 To 10
'If .Controls("CheckBox" & i).Caption = cible Then
'If .Controls("CheckBox" & i).Caption = macellule.Text Then
If .Controls("CheckBox" & i).Caption = macellule Then
.Controls("CheckBox" & i).Value = True
End If
Next i
End With
End If

End Sub


Voilà j'espère avoir été clair dans mon problème.
Un grand merci à ceux qui se pencheront dessus

3 réponses

Résolu
3
Re-bonjour tout le monde,

Pour peut-être faciliter la compréhension de mon problème, voici un lien de téléchargement du fichier : http://www.cjoint.com/?BLjoUkvp1Fd

Le but est donc de remplir le UserForm depuis le tableau sur le Feuil2 du classeur Excel


Pour l'instant j'ai essayé de cocher les cases checkbox associées aux données dans la colonne "raisons".
J'ai plus détaillé les macros dans le fichier en téléchargement ci-avant.

J'ai fait plusieurs essais de code mais les retours à la ligne Chr(10) me posent problème.

Merci pour votre aide
0
PS: le bouton sur la Feuil1 du classeur me servira simplement à lancer le formulaire
0
Rejoignez-nous