Récupération données d'un userform dans un module
Bonjour,
Je voudrais créer une nouvelle feuille Excel grâce à VBA, qui serait en fait une nouvelle table d'une base de données.
Pour cela j'ai un userform qui contient une combobox qui demande le type de feuille que je veux ajouter, pour "typer" la feuille. Par exemple on va voir les feuilles/tables de type "GEST_" suivi du nom de la table de gestion.
Les types de feuilles sont répertoriés dans une feuille Excel appelée "GEST_TABLES_TYPE" , dont la colonne B contient le préfixe, comme " GEST_ " et la colonne C contient la signification du préfixe (par exemple "Table de gestion (permet de gérer les contraintes...)" ).
Dans la combobox l'utilisateur voit la liste des significations de préfixes. Il rajoute le reste du nom de table dans un champ. Lorsqu'il appuie sur un bouton "OK", la valeur choisie dans la combobox est stockée dans une variable typet et la valeur entrée dans le champ, dans une variable desc. Jusque là pas de problème, normalement je peux récupérer les valeurs.
Mais lorsque je fais un with sheets pour parcourir ma feuille de gestion de tables avec un for et if dedans, ça bloque au niveau du end if, et ça sans message d'erreur.
Au début j'avais un message qui m'affichait "type d'argument byref incompatible". J'ai réalisé que j'avais mal déclaré certaines variables et j'ai réctifié cela, mais maintenant il n'y a plus d'erreur, juste un surlignage jaune sur le end if... Je n'avais pas mis de Else avant, mais je l'ai rajouté en pensant que ça changerait quelque chose.. Apparemment ça ne change rien.. :(
Voilà le code pour le userform :
Code:
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
|
Option Explicit
Public prefixet As Variant
Public desc As String
Public Sub Bouton_OkTypeTable_Click()
'déclaration de variables
Dim typet As String
Dim desc As String
Dim prefixet As Variant
Dim lig As Integer
Dim drlig As Integer
'récupération valeur choisie dans la combobox
typet = COMBOBOX_TYPETABLE.Value
'récupération valeur entrée dans la textbox
desc = TEXTBOX_DESCTBL.Value
'détermination du préfixe à utiliser
With Sheets("GEST_TABLES_TYPE")
drlig = Sheets("GEST_TABLES_TYPE").Range("A1").End(xlDown).Row
For lig = 2 To drlig
'si la signification du préfixe dans la feuille correspond à la signification choisie alors
If (typet = Sheets("GEST_TABLES_TYPE").Range("C" & lig).Value) = True Then
'récupérer le préfixe associé
prefixet = Sheets("GEST_TABLES_TYPE").Range("B" & lig).Value
Else
End If
Next lig
End With
Add_Table desc, prefixet 'appel de la sub add_table
End Sub |
Le userform appelle la fonction add_table située dans un module (option explicit a été écrit au debut du module) :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22
|
Sub Add_Table(ByRef tableUser As String, ByRef typetableUser As Variant)
'Cette sub ajoute une table
' Déclaration des variables
Dim nomTable As String
Dim nomcomplet As String
Dim typetable As Variant
nomTable = tableUser
typetable = typetableUser
' Attribue le nom choisi à la feuille
nomcomplet = typetable & nomTable
Sheets.Add
ActiveSheet.Name = nomcomplet
End Sub |
Pourriez-vous m'aider s'il vous plaît.. ? Merci d'avance