Private Sub CommandButton1_Click()
Dim ligne As Long
ligne = Sheets(1).Range('A65536').End(xlUp).Row + 1
For i = 1 To 4
Cells(ligne, i) = Controls('TextBox' & i)
Next i
End Sub
For Each ctrl In Me.Controls 'Pour tous les contrôles
If TypeName(ctrl) = 'TextBox' And ctrl.Visible = True Then
If KeyAscii = 59 Then KeyAscii = 0
end if
end if
Pas sur d'avoir tout compris, mais si tu veux boucler sur les textbox avant de renvoyer les valeurs dans les cellules, pour supprimer le caractère ; alors utilise cette macro :
Code:
Private Sub CommandButton1_Click()
Dim ligne As Long
Dim i As Byte
Dim ctrl As Control
Dim temp
For Each ctrl In Me.Controls 'Pour tous les contrôles
If TypeName(ctrl) = 'TextBox' And ctrl.Visible = True Then
For i = 1 To Len(ctrl)
If Mid(ctrl, i, 1) <> '' Then
If Asc(Mid(ctrl, i, 1)) = 59 Then
ctrl = Left(ctrl, i - 1) & Mid(ctrl, i + 1)
End If
End If
Next i
End If
Next ctrl
ligne = Sheets(1).Range('A65536').End(xlUp).Row + 1
For i = 1 To 4
Cells(ligne, i) = Controls('TextBox' & i)
Next i
End Sub
Par contre si tu veux appliquer cette meme macro à tes 4 textbox sans avoir à saisir 4 macros, tu ne peux pas utiliser ce type de code.
Il faut passer par un module de classe, mais je pense que c'est utiliser un marteau pilon pour écraser une mouche
mais si tu veux un modèle, hésites pas à le dire .
mais plus personne pour m'aidé, (vu le nombre de message il est vrais que cela decourage)
dans ce post j'explique mon projet
dont j'ai deja fait mon USF qui fonctionne sans probléme.
mais mon besoin est que je dois permetre à plusieurs personne de travailer sur un seul fichier source.
au depart je pensais utiliser un fichier excel qui serait fermé comme fichier de reference.
mais avec excel 97 la technologie ADO c'est pas top top car c'est long et les enregistrement ne sont pas toujours sur les bonnes lignes.
Comme j'ai vraiment besoin de mettre en place ce genre de structure, j'ai pensé a non plus utilisé un fichier excel fermé mais un fichier text (1 par feuille) d'où ma demande d'empécher la saisie de ';' qui seront mais separateur pour mon fichier text.
Pour exporter mes donnés j'ai fait cette macro mais elle ne repond pas à mes besoin
inch:
Code:
Sub export()
On Error Resume Next
Sheets(VarMois).Select
Cells.Select
Selection.Copy
Workbooks.Add
ActiveSheet.Paste
Range('A1').Select
Application.CutCopyMode = False
ActiveWorkbook.SaveAs FileName:='D:\\thomas\\Mes documents\\' & VarMois & '.txt', _
FileFormat:=xlText, CreateBackup:=False
ActiveWindow.Close
Sheets('HISTO').Select
End Sub
dans cette macro la variable VarMois est declaré public dans un modul puis valorisé par un combobox dans mon USF
ce que j'aimerais c'est que la separation de mes cellule ce face par un ';' mais je n'ai pas trouvé comment.
je suis desolé pour la piece joint mais mon fichier est sup à 50ko et je ne peux plus le reduire.
mon fichier est dans le post cité plus haut
D'avance merci
Thomas
Ps : vous allez trouvé ma macro étrange pour l'export en text mais je n'ai pas trouvé d'autre facon de faire en gardant mon fichier initial en cours (anomalie1.xls)
j'ai pas tout compris à ta facon de procéder, mais pour copier les valeurs d'un onglet dans un fichier text, tu peux utiliser ce type de macro :
Code:
Sub Bouton1_QuandClic()
Dim tablo As Variant
Dim texte As String
Dim i As Long
Dim j As Byte
Dim fichier
Dim varmois As String
varmois = 'septembre'
fichier = Application.GetSaveAsFilename(varmois, fileFilter:='Text Files (*.txt), *.txt')
If fichier = False Then Exit Sub
With Sheets(varmois)
tablo = .Range('A1:D' & .Range('A65536').End(xlUp).Row)
End With
Open fichier For Output As #1
For i = 1 To UBound(tablo, 1)
For j = 1 To 4
texte = texte & tablo(i, j) & Chr(59)
Next j
Print #1, texte
texte = ''
Next i
Close #1
End Sub
ce type de macro transforme un tablo variant en fichier texte avec comme séparateur le ;
il te faut bien sur adapter l'enregistrement du fichier text, moi je suis passer par un getsave... pour plus de facilité.
en espérant ne pas etre trop à coté de la plaque , lol