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 :
Le userform appelle la fonction add_table située dans un module (option explicit a été écrit au debut du module) :
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
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
Pourriez-vous m'aider s'il vous plaît.. ? Merci d'avance
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 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
Partager