Bonjour !
Je souhaite à l'aide d'une macro, supprimer un outil d'un tableau; c'est à dire que l'outil passe du tableau de l'onglet "Outils_utilises" à l'onglet "Outils_HA". J'ai codé quelque chose, avec un autre userform cette fois (userForm2).
Je rencontre plusieurs problème : tout d'abord je souhaite que l'utilisateur choisisse son outil dans la liste des outils qui sont actuellement dans le tableau "Outils_utilisés". néanmoins, cette liste doit être dynamique car des outils sont susceptibles d'avoir disparus/ été ajoutés, etc.. En fait, j'aimerais lister la colonne "noms" du tableau, mais mon code ne fonctionne pas :
J'ai tenté beaucoup de codes, notamment en code java (c'est parti trèèèès loin) ; sans succès !
Ensuite, une fois que la personne a sélectionné le nom de son outil, l'ordinateur doit chercher le nom de cet outil dans le tableau et couper-coller les valeurs du tableau correspondantes. J'ai sectionné cette grosse partie en plusieurs étapes que voici :
Lorsque je teste mon code, j'obtiens un message d'erreur :
Et lorsque je clique sur débogage :
Le problème viendrait donc de la toute première étape, lorsque je souhaite afficher la liste (dynamique) des outils listés dans la colonne "Noms" du tableau. Je pense que mon code :
ComboBox1.ColumnCount = 1
ComboBox1.List() = LO1.ListColumns("Nom")
Est faux. Mais je ne vois pas comment l'améliorer.
Auriez-vous une petite idée?
Merci
Anna
Je souhaite à l'aide d'une macro, supprimer un outil d'un tableau; c'est à dire que l'outil passe du tableau de l'onglet "Outils_utilises" à l'onglet "Outils_HA". J'ai codé quelque chose, avec un autre userform cette fois (userForm2).
Je rencontre plusieurs problème : tout d'abord je souhaite que l'utilisateur choisisse son outil dans la liste des outils qui sont actuellement dans le tableau "Outils_utilisés". néanmoins, cette liste doit être dynamique car des outils sont susceptibles d'avoir disparus/ été ajoutés, etc.. En fait, j'aimerais lister la colonne "noms" du tableau, mais mon code ne fonctionne pas :
VB:
'Pour le formulaire
Private Sub UserForm_Initialize()
Dim LO1 As ListObject
Dim LO2 As ListObject
Dim ws1 As Worksheet
Dim ws2 As Worksheet
Dim j As Integer
Dim nbOutils As Integer
Set Ws1 = Sheets("Outils_utilises")
Set LO1 = Ws1.ListObjects("Tab_outils_utilises")
Set Ws2 = Sheets("Outils_HA")
Set LO2 = Ws2.ListObjects("Tab_outils_HA")
'Nom de l'outil'
ComboBox1.ColumnCount = 1
ComboBox1.List() = LO1.ListColumns("Nom")[B] 'Affichage de la colonne "Noms" [/B]
'Date de mise hors application :'
Me.Controls("TextBox3").Visible = True
J'ai tenté beaucoup de codes, notamment en code java (c'est parti trèèèès loin) ; sans succès !
Ensuite, une fois que la personne a sélectionné le nom de son outil, l'ordinateur doit chercher le nom de cet outil dans le tableau et couper-coller les valeurs du tableau correspondantes. J'ai sectionné cette grosse partie en plusieurs étapes que voici :
Code:
Private Sub CommandButton1_Click() 'Pour la mise hors application d'un outil
Dim confirmation
Dim i As Integer
Dim LO1 As ListObject
Dim LO2 As ListObject
Set Ws1 = Sheets("Outils_utilises")
Set LO1 = Ws1.ListObjects("Tab_outils_utilises")
Set Ws2 = Sheets("Outils_HA")
Set LO2 = Ws2.ListObjects("Tab_outils_HA")
[U]'Etape 1 - L'ordinateur cherche l'outil dans la liste des outils[/U]
'[U]Etape 2 - Insertion d'une ligne à la fin du tableau "Tab_outils_HA :"[/U]
Insertion = LO2.ListRows.Add(AlwaysInsert:=True)
[U] 'Etape 3 - Couper-coller des cellules du tableau "tab_outils_utilises" qui se trouvent en colonnes 2 à 7 :'[/U]
Ajout1 = LO1.ListRows(nom_outil).Cut.Range(i, 2 / 7)
[U] 'Etape 4 :Collage de ces cellules dans la dernière ligne , dans les cellules 2 à 7 du tableau "Tab_outils_HA":'[/U]
LO1.ListRows.Paste LO2.ListRows.Range(i, 2 / 7)
[U] 'Etape 5 - Copie des cellules du tableau "tab_outils_utilises" qui se trouvent en colonnes 8 à 25 :'[/U]
Ajout2 = LO1.ListRows(nom_outil).Cut.Range(i, 8 / 25)
[U] 'Etape 6 - Collage de ces cellules dans la dernière ligne , dans les cellules 9 à 26 du tableau "Tab_outils_HA" :'[/U]
LO1.ListRows.Paste LO2.ListRows.Range(i, 9 / 26)
[I] 'Message de confirmation'[/I]
confirmation = MsgBox(Prompt:="Outil inséré avec succès !", Buttons:=vbOKOnly, Title:="Ajout d'un outil réussi")
Me.Hide
Unload Me
End Sub
Lorsque je teste mon code, j'obtiens un message d'erreur :
Et lorsque je clique sur débogage :
Le problème viendrait donc de la toute première étape, lorsque je souhaite afficher la liste (dynamique) des outils listés dans la colonne "Noms" du tableau. Je pense que mon code :
ComboBox1.ColumnCount = 1
ComboBox1.List() = LO1.ListColumns("Nom")
Est faux. Mais je ne vois pas comment l'améliorer.
Auriez-vous une petite idée?
Merci
Anna