*** Saisir dans une datagrid comme dans TextBox ***

cs_Heny Messages postés 125 Date d'inscription samedi 25 octobre 2003 Statut Membre Dernière intervention 19 avril 2007 - 14 mars 2006 à 12:42
lekenyanbreton Messages postés 26 Date d'inscription vendredi 10 mars 2006 Statut Membre Dernière intervention 26 juin 2007 - 14 mars 2006 à 13:38
Salut tout le monde
je voudrai savoir comment ecrire dans un datagrid ou autre grille equivalente (avec le nim SVP) sans que celle ci soit connecter a une base de donneé?
Merci de me repondre

1 réponse

lekenyanbreton Messages postés 26 Date d'inscription vendredi 10 mars 2006 Statut Membre Dernière intervention 26 juin 2007
14 mars 2006 à 13:38
Tu devrais creer un module de classe contenant le code suivant: (moi je l'utilise pour une MSFlexgrid)

Option Explicit
Dim mGrd As Object
Dim mObjet As Object
Dim mCol As Long 'Colonne encours
Dim mRow As Long 'Ligne encours


Private Sub Class_Terminate()
Set mGrd = Nothing
Set mObjet = Nothing
End Sub


Private Sub AnnuleSaisie()
'--- Copy la valeur du tag dans la cellule et cache les objets
On Error Resume Next
mObjet.Text = mObjet.Tag
mGrd.Text = mObjet.Tag
mGrd.SetFocus
mObjet.Visible = False
On Error GoTo 0
End Sub


Private Sub ValideSaisie()
'Copy le texte de l'objet dans la cellule encours
'mObjet = mGrd.Container
With mObjet
mGrd.TextMatrix(mRow, mCol) = UCase(Trim(.Text))
.Visible = False

End With
End Sub


Public Property Set Grille(Grd As Object)
'Grille Concernée
Set mGrd = Grd
End Property


Public Property Set ObjetDeSaisie(Objet As Object)
'/// Définit l'objet de saisie \\\
' soit une Zone de texte ou une Combobox


'Cache éventuellement l'ancien objet
If Not mObjet Is Nothing Then mObjet.Visible = False


'sauve l'objet de saisie
Set mObjet = Objet
End Property


Public Sub GestionTouche(KeyAscii As Integer)
'/// Gestion des touche Entrer et Cancel
Select Case KeyAscii
Case 27
AnnuleSaisie 'Annule la saisie
KeyAscii = 0
Case 13
ValideSaisie 'Valide la saisie
StopSaisie
KeyAscii = 0
End Select
End Sub



'**************************************************************
'* Positionner correctement l'objet de saisie dans la cellule,*
'* synchroniser le texte avec le texte de la cellule, *
'* et rendre visible l'objet de saisie. *
'**************************************************************
Public Sub StartSaisie()
Dim i As Integer
Dim m As String
'---Variables des Coordonnées de la cellule
Dim L As Integer, T As Long, W As Long, H As Long

'Sauve la cellule en cours
'Affecte à l'objet qui sert à la saisie le même container
'que la grille pour des raisons de positionnement dans la
'cellule
Set mObjet.Container = mGrd.Container


'Sauve les coordonnées et le texte de la cellule
With mGrd
L = .Left + .CellLeft
T = .Top + .CellTop
W = .CellWidth
H = .CellHeight
m = .Text
mCol = .Col
mRow = .Row
End With


'Positionne l'objet en fonction de son type
'Texte Box
If TypeOf mObjet Is TextBox Then
With mObjet
.Move L, T - 10, W, H
.Text = m
.SelStart = 0
.SelLength = Len(.Text)
.Tag = .Text 'Sauve le texte dans le tag pour restitution lors d'une éventuelle annulation
.Visible = True
.SetFocus
End With
End If


'Combo Box
If TypeOf mObjet Is ComboBox Then
With mObjet
.Move L, T - 10, W
'Cette boucle cherche le texte de la cellule dans la liste
'pour synchronisation
For i = 0 To .ListCount - 1 If .List(i) m Then .ListIndex i: Exit For
Next i
.Tag = UCase(.Text) 'Sauve le texte dans le tag
.Visible = True
.SetFocus
End With
End If


'Check Box
If TypeOf mObjet Is CheckBox Then
With mObjet
.Move L + ((W - .Width) / 2), T, .Width, H
'Sauve le texte dans le tag
If m = "Faux" Then
.Value = 0
End If
If m = "Vrai" Then
.Value = 1
End If
.Tag = m
.Visible = True
.SetFocus
End With
End If


End Sub


Public Sub StopSaisie()
'/// Cache Simplement la zone de saisie \\\
On Error Resume Next
mObjet.Visible = False
mGrd.SetFocus
On Error GoTo 0
End Sub



ensuite tu pourra l'utiliser :


'pour commencer la saisie
Set saisieDosage.ObjetDeSaisie = Text1
saisieDosage.StartSaisie

'pour terminer la saisie
saisieDosage.GestionTouche 13

voila normalement si tu pige ca ca doit marcher!!!
Bon courage
0
Rejoignez-nous