[Excel] Basuler les informations d'une listBox vers une feuille Excel
Coucou, voici une question qu'elle est bonne. :calim2:
J'ai dans un form, une liste box qui contient du texte.
exemple :
M571;L405
M666;R888
865;586
512000;480000
J'aimerais proposer à l'utilisateur de sauvegarder en mémoire cette liste.
En fait, tout ce qui est dans cette liste est copié dans une feuille "Memory" de ce même classeur.
Est-ce possible?
Eventuellement de restaurer ces infos dans la listeBox ;)
Au mieux les digits avant le « ; » dans la colonne A, le « ; » dans la colonne B et les digits après le « ; » dans la colonne C.
Cordialement,
Paloma
:New:New:New:New:New:New:New:New:New:New
Bon voilà j'ai une nouvelle Question.
J'avoue que même avec http://silkyroad.developpez.com/VBA/...racteres/#LI-I je ne sais pas comment m'y prendre... :(
Ma feuille Memory me sert un peu à tout.
Sauvegarde des filtres, du chemin de travail "browser" ...
Donc j'aimerais faire ça sans rien Cassé.
Comment puis-je facilement modifier mon code pour scinder ma chaîne de caractère et les placer au bon endroit de mon tableau ?
Comment faire le chemin inverse?
Sauvegarde des filtres dans "Memory" :
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
| Private Sub ButSaveList_Click()
Dim Ligne As String
Dim LigneExcel As Integer
Dim compt As Integer
'activer la feuille "Memory" initialisé à la ligne 2 -------------------------
'Sheets("Memory").Activate
LigneExcel = 2
With Worksheets("Memory").Cells.ClearContents
End With
' Initialisation des entêtes de colonnes - les manipulations de données se faisant à partir de la ligne 2 ---
Dim wksDest As Worksheet
Set wksDest = Worksheets("Memory")
wksDest.Cells(1, 1) = "Filter (In Values)"
wksDest.Cells(1, 2) = "Separator"
wksDest.Cells(1, 3) = "Filter (OUT Values)"
wksDest.Cells(1, 4) = "Reference Work Path"
wksDest.Cells(2, 4) = TxtJobDirectory
'Inscrire le contenu d'une listbox dans la feuille "Memory" d'un classeur EXCEL
For compt = 0 To ListBoxFilters.ListCount - 1
' Affecter les données de la listbox dans les cellules de la feuille
With ActiveWorkbook.Worksheets("Memory")
.Cells(LigneExcel, 1) = ListBoxFilters.List(compt)
LigneExcel = LigneExcel + 1
End With
Next compt
MsgBox "Your filters list has saved.", vbInformation + vbOKOnly, "Liste saved"
'Unload Me
'End With
End Sub |
Récupération des Filtres dans ma liste box à partir de "Memory" :
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
| Private Sub ButRestore_Click()
Dim Ligne As String
Dim LigneExcel As Integer
Dim compt As Integer
ListBoxFilters.Clear
'activer la feuille "Memory" à la ligne 1 -----------------------------------
'Sheets("Memory").Activate
LigneExcel = 1
'Inscrire le contenu d'une feuille Excel dans une listeBox
suite:
LigneExcel = LigneExcel + 1
Ligne = Sheets("Memory").Cells(LigneExcel, 1)
If Ligne = "" Then
If LigneExcel = 2 And Ligne = "" Then
MsgBox " Not Data saved ", vbCritical, "Caution"
Else
ButGenerate.Visible = True
MsgBox " All entries has updated", vbInformation, "Congratulation!"
End If
Exit Sub
Else
ListBoxFilters.AddItem (Ligne)
GoTo suite
End If
End Sub |
Merci pour le coup de main :)
Bien à vous.
Paloma
Nan c'est po ce que je veux dire ...
Merci bbil mais regarde :
Code:
1 2 3 4 5 6
| 'Extraction de la chaine de caractère jusqu'au ";" ---------------------------------------------------
Dim strOldChar As String
Dim intPosition As Integer
intPosition = InStr(1, strValue, ";") - 1
strOldChar = Left(strValue, intPosition) |
pour le separateur ";" ben il suffit de l'ajouter tout simplement à cahque ligne dans Excel,
et enfin
Code:
1 2 3 4 5 6 7
|
'Extraction après le ";" ----------------------------------------------------------
Dim strNewCharChar As String
'Dim intPosition As Integer
intPosition = InStr(1, strValue, ";")+1
strNewCharChar = Mid(strValue, intPosition) |
Non, ce qui me gène c'est comment adapter :
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
| Private Sub ButSaveList_Click()
Dim Ligne As String
Dim LigneExcel As Integer
Dim compt As Integer
'activer la feuille "Memory" initialisé à la ligne 2 -------------------------
'Sheets("Memory").Activate
LigneExcel = 2
With Worksheets("Memory").Cells.ClearContents
End With
' Initialisation des entêtes de colonnes - les manipulations de données se faisant à partir de la ligne 2 ---
Dim wksDest As Worksheet
Set wksDest = Worksheets("Memory")
wksDest.Cells(1, 1) = "Filter (In Values)"
wksDest.Cells(1, 2) = "Separator"
wksDest.Cells(1, 3) = "Filter (OUT Values)"
wksDest.Cells(1, 4) = "Reference Work Path"
wksDest.Cells(2, 4) = TxtJobDirectory
'Inscrire le contenu d'une listbox dans la feuille "Memory" d'un classeur EXCEL
For compt = 0 To ListBoxFilters.ListCount - 1
' Affecter les données de la listbox dans les cellules de la feuille
With ActiveWorkbook.Worksheets("Memory")
.Cells(LigneExcel, 1) = ListBoxFilters.List(compt)
LigneExcel = LigneExcel + 1
End With
Next compt
MsgBox "Your filters list has saved.", vbInformation + vbOKOnly, "Liste saved"
'Unload Me
'End With
End Sub |
avec ce que j'ai plus haut ?:aie:
j'ai un peu de mal avec les tableaux, enfin c'est pas pour les déclarer mais plutôt savoir si j'ai le droit de faire ça ou ça ...
:arf:
Cordialement,
Paloma
Non je ne l'ai pas zappé :-)
En fait je suis toujours plus ou moins au même point.
voilà ce que j'ai mais je n'arrive pas a finir le code pour placer correctement les valeurs :(
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 51 52 53 54 55 56 57
| Private Sub ButSaveList_Click()
Dim Ligne As String
Dim LigneExcel As Integer
Dim compt As Integer
'Récupération dans un tableau les informations à placer --------------------------------------
Dim st As String
Dim tb(1) As String
Dim i As Integer
'activer la feuille "Memory" initialisé à la ligne 2 -------------------------
'Sheets("Memory").Activate
LigneExcel = 2
With Worksheets("Memory").Cells.ClearContents
End With
' Initialisation des entêtes de colonnes - les manipulations de données se faisant à partir de la ligne 2 ---
Dim wksDest As Worksheet
Set wksDest = Worksheets("Memory")
wksDest.Cells(1, 1) = "Filter (In Values)"
wksDest.Cells(1, 2) = "Separator"
wksDest.Cells(1, 3) = "Filter (OUT Values)"
wksDest.Cells(1, 4) = "Reference Work Path"
wksDest.Cells(2, 4) = TxtJobDirectory
'Inscrire le contenu d'une listbox dans la feuille "Memory" d'un classeur EXCEL
For compt = 0 To ListBoxFilters.ListCount - 1
st = ListBoxFilters.List(compt)
tb(i) = CStr(Split(st, ";"))
For i = 0 To UBound(tb)
Debug.Print tb(i)
Next i
' Affecter les données de la listbox dans les cellules de la feuille
With ActiveWorkbook.Worksheets("Memory")
'.Cells(LigneExcel, 1) = ListBoxFilters.List(compt)
.Cells(LigneExcel, 1) = tb(0)
End With
With ActiveWorkbook.Worksheets("Memory").Cells(LigneExcel, 2) = ";"
End With
With ActiveWorkbook.Worksheets("Memory")
'.Cells(LigneExcel, 1) = ListBoxFilters.List(compt)
.Cells(LigneExcel, 3) = tb(1)
LigneExcel = LigneExcel + 1
End With
Next compt
MsgBox "Your filters list has saved.", vbInformation + vbOKOnly, "Liste saved"
'Unload Me
'End With
End Sub |
je sais que ça ne peut pas fonctionner comme ça mais je cherche ...
sinon, je reposerais une question car le problème n'est toujours pas résolu, enfin pour moi ...
:triste: