Bonjour,
Je viens vous poser une question même si j'ai trouvé une solution
J'ai un USERFORM
et un module avec la fonction Init_Liste pour remplir le tableau Table_Book mais quand celui-ci est vide cela me pose une erreur d'éxécution 13.
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 ' Oblige la déclaration des variables au préalable 'Option Explicit '**** ' Déclaratio objet '**** ' Déclare la variable objet Worksheet Dim WsBookTrans As Worksheet ' Tableau des bookmakers Dim Table_Book() As Variant ' Titre UserForm Const Titre_UFbook As String = ".::: Gestion des bookmakers" ' Coin gauche début Tableau Bookmaker Dim Deb_Book As Range ' '**** ' A l'activation de l'USERFORM '**** Private Sub UserForm_Initialize() Set Deb_Book = Range("B18") Table_Book = Init_Liste(Deb_Book) End Sub
Par conséquence j'ai modifié le code de l'USERFORM en ajoutant une fonction dans le module.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11 Function Init_Liste(ByVal Deb_Liste As Range) As Variant Dim Tabl() If (Deb_Liste = Null Or Deb_Liste = "") Then MsgBox "Liste vide" Exit Function End If With Deb_Liste Tabl = .Cells(1, 1).Resize(.CurrentRegion.End(xlDown).Row - .Row + 1, .CurrentRegion.End(xlToRight).Column - .Column + 1).Value End With Init_Liste = Tabl End Function
module :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11 Private Sub UserForm_Initialize() Set Deb_Book = Range("B18") Init_Liste Deb_Book, Table_Book If Test_Tabvide(Table_Book) = False Then For i = LBound(Table_Book, 1) To UBound(Table_Book, 1) For j = LBound(Table_Book, 2) To UBound(Table_Book, 2) MsgBox Table_Book(i, j) Next j Next i End If End Sub
Même si ma 2ième solution marche j'aimerai bien savoir mon erreur dans la 1ère solution
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14 Function Test_Tabvide(ByVal Plage As Variant) As Boolean 'La variable VarTab doit impérativement être de type Variant. Dim VarTab As Variant ' '...La procédure ' On Error Resume Next 'VarTab va prendre la valeur Empty si le tableau est vide. VarTab = UBound(Plage) On Error GoTo 0 If IsEmpty(VarTab) Then Test_Tabvide = True End Function
et si mon code est bien organisé ?
Merci de votre participation et de votre aide
Partager