après plusieurs recherches sur le site et sur internet pour trouver un exemple de code pour un tableur en vb6, je me suis mis en tête de le construire moi-même.ce tableur n'est pas aussi complet que excel mais il permet de voir comment jouer avec les propriétés et méthodes du contrôle msflexgrid.
Source / Exemple :
Dim i, j, k, R, c As Long
Private Sub Combo_Click()
'procedure pour les operations
Dim s, min, max As Long 'variable qui doit contenir le resultat
Dim cpt As Integer
If (Combo.ListIndex = 0) Then 'si on clique sur le 1er elt alors
s = 0 'initialisation du résultat
For i = 1 To grille.ColSel - 1 'boucle de parcours jusqu'a l'avant dernière cellule
If (grille.TextMatrix(grille.RowSel, i) <> "") Then 'si la cellule n'est pas vide alors
If (IsNumeric(grille.TextMatrix(grille.RowSel, i))) Then
Text1.Text = grille.TextMatrix(grille.RowSel, i) 'on fait passer la valeur de la cellule courante dans la textbox
s = s + Val(Text1.Text) 'et on additionne
End If
End If
Next
grille.TextMatrix(grille.RowSel, grille.ColSel) = s 'on fait glisser le resultat dans la cellule selectionnee
End If
If (Combo.ListIndex = 1) Then 'on fait pareil pour les autres opérations
s = 1
For i = 1 To grille.ColSel - 1
If (grille.TextMatrix(grille.RowSel, i) <> "") Then
If (IsNumeric(grille.TextMatrix(grille.RowSel, i))) Then
Text1.Text = grille.TextMatrix(grille.RowSel, i)
s = s * Val(Text1.Text)
End If
End If
Next
grille.TextMatrix(grille.RowSel, grille.ColSel) = s
End If
If (Combo.ListIndex = 2) Then
s = 0
For i = 1 To grille.ColSel - 1
If (grille.TextMatrix(grille.RowSel, i) <> "") Then
If (IsNumeric(grille.TextMatrix(grille.RowSel, i))) Then
Text1.Text = grille.TextMatrix(grille.RowSel, i)
s = (Val(Text1.Text)) - s
End If
End If
Next
grille.TextMatrix(grille.RowSel, grille.ColSel) = s
End If
If (Combo.ListIndex = 3) Then
For i = 1 To grille.ColSel - 1 'boucle pour stocker la 1ere valeur dans min en tant que valeur minimu au depart
If (IsNumeric(grille.TextMatrix(grille.RowSel, i))) Then 'si l'expression est numerique alors
min = Val(grille.TextMatrix(grille.RowSel, i)) 'le minimum est la 1ere valeur numerique trouvée
Exit For 'on sort de la boucle
End If
Next
For i = 1 To grille.ColSel - 1
If (grille.TextMatrix(grille.RowSel, i) <> "") Then
If (IsNumeric(grille.TextMatrix(grille.RowSel, i))) Then
If (Val(grille.TextMatrix(grille.RowSel, i)) < min) Then min = Val(grille.TextMatrix(grille.RowSel, i)) 'si la valeur est numerique et qu'elle est plus petite que le minimum alors cette valeur devient le minimum
End If
End If
Next
grille.TextMatrix(grille.RowSel, grille.ColSel) = min 'affiche le minimu dans la cellule selectionnée
End If
If (Combo.ListIndex = 4) Then
s = 0
cpt = 0
For i = 1 To grille.ColSel - 1
If (grille.TextMatrix(grille.RowSel, i) <> "") Then
If (IsNumeric(grille.TextMatrix(grille.RowSel, i))) Then
Text1.Text = grille.TextMatrix(grille.RowSel, i)
s = s + Val(Text1.Text)
cpt = cpt + 1
End If
End If
Next
grille.TextMatrix(grille.RowSel, grille.ColSel) = s / cpt
End If
If (Combo.ListIndex = 5) Then
For i = 1 To grille.ColSel - 1
If (IsNumeric(grille.TextMatrix(grille.RowSel, i))) Then 'idem que pour le maximum
max = Val(grille.TextMatrix(grille.RowSel, i))
Exit For
End If
Next
max = Val(grille.TextMatrix(1, 1))
For i = 1 To grille.ColSel - 1
If (grille.TextMatrix(grille.RowSel, i) <> "") Then
If (IsNumeric(grille.TextMatrix(grille.RowSel, i))) Then
If (Val(grille.TextMatrix(grille.RowSel, i)) > max) Then max = Val(grille.TextMatrix(grille.RowSel, i))
End If
End If
Next
grille.TextMatrix(grille.RowSel, grille.ColSel) = max
End If
End Sub
Private Sub Form_Load()
'je fais d'abord le design de la grille
grille.Rows = 51 'je place le nombre de lignes a 50
grille.Cols = 51 'je place aussi le nombre de colonnes a 50
grille.RowHeight(0) = 400 'je definis la taille des lignes par defaut
grille.ColWidth(0) = 400 'je definis la taille descolones par defaut
'initialisation des variables compteurs pour les en-tetes de colonnes avec le code ascii de A
j = 65
k = 65
'boucles pour mettre les lettres des colonnes fixes
For i = 1 To 26 'pour commencer a la 2eme colonne et liste les lettres de A a Z
grille.TextMatrix(0, i) = Chr(j) 'inscrit la lettre dans la cellule correspondante par conversion du code ascii
j = j + 1 'incremente le code ascii pour passer a la lettre suivante
Next i
j = 65 'reinitialisation de j a A
For i = i To grille.Cols - 1 ' pour commencer après la lettre Z
grille.TextMatrix(0, i) = Chr(j) & Chr(k) 'recommence le comptage des lettres avec 2lettres
k = k + 1
Next i
'boucle pour numeroter les lignes
For i = 1 To grille.Rows - 1
grille.TextMatrix(i, 0) = i
Next i
'boucle pour centrer les lettres a l'interieur des colonnes
For i = 1 To grille.Cols - 1 'j'initialise tjrs i a 1 pour ne pas prendre en compte la 1ere cellule
grille.ColAlignmentFixed = flexAlignCenterCenter
Next i
'initialisation de la boite de saisie a la taille des cellules
Text1.Width = grille.CellWidth
Text1.Height = grille.CellHeight
Text2.Text = "A1"
End Sub
Private Sub Form_Resize()
'une astuce personnelle dont je suis particulièrement contant qui consiste a redimensionner la grille en fonction de la form @eba-zogo lionel junior(lez-j)
grille.Height = Form1.Height - 1000
grille.Width = Form1.Width - 500
End Sub
Private Sub grille_Click()
'gestion de l'affichage de la position courante
Text1.Visible = False 'quand l'utilisateur clique sur la grille la textbox est masquée
Text2.Text = grille.TextMatrix(0, grille.ColSel) & grille.RowSel 'la deuxiemme textbox affiche la lettre de la colonne et le numéro de la ligne donc la position
End Sub
Private Sub grille_DblClick()
'procédure de saisie d'informations dans les cellules de la grille
Dim ch As String 'je déclare une variable pour reccueillir le contenu de la cellule
Text1.Visible = False
ch = grille.TextMatrix(grille.RowSel, grille.ColSel)
Text1.Text = ch 'le contenu de la cellule est trasféré dans la textbox
Text1.Left = grille.ColPos(grille.ColSel) + 265
Text1.Top = grille.RowPos(grille.RowSel + 1) + 265
Text1.Visible = True 'je rends le textbox visible
'allignement du textbox sur la cellule
'et je passe le focus au textbox
Text1.SetFocus
For i = 1 To grille.Rows
For j = 1 To grille.Cols
grille.CellBackColor = &HFFFFFF
Next
Next
'EBA-ZOGO Lionel junior
End Sub
Private Sub grille_GotFocus()
' procedure pour passer le focus à la grille et faire passer la textbox a la cellule ki a le focus
Text1.Text = ""
Text1.Left = grille.ColPos(grille.ColSel) + 265
Text1.Top = grille.RowPos(grille.RowSel) + 265
End Sub
Private Sub Text1_KeyDown(KeyCode As Integer, Shift As Integer)
' cette procedure gere l'appui sur la touche entrée
'j'utilise des variables pour incrémenter le parcours des lignes et des colonnes
R = grille.RowSel + 1
c = grille.ColSel + 1
Do 'je fais une boucle pour répéter l'opéation
If (KeyCode = vbKeyReturn) Then 'si la touche entrée a été enfoncé
grille.TextMatrix(grille.RowSel, grille.ColSel) = Text1.Text 'la cellule courante prend la valeur de la textbox
Text1.Visible = True
Text1.Left = grille.ColPos(grille.ColSel) + 265
Text1.Top = grille.RowPos(R + 1) + 265
grille.RowSel = R 'passage du paamete de la cellule suivante
i = 1
Text1.Text = grille.TextMatrix(grille.RowSel, grille.ColSel) 'la textbox prend la valeur de la nouvelle cellule sélectionnée donc vide si la cellule est vide
Text1.SetFocus
End If
Loop While (grille.RowPos(R) < grille.Rows - 1)
End Sub
Conclusion :
je l'ai fait pour que certaines personnes n'aient plus à se casser la tete. vous pouvez le modifier à volonté.
Vous n'êtes pas encore membre ?
inscrivez-vous, c'est gratuit et ça prend moins d'une minute !
Les membres obtiennent plus de réponses que les utilisateurs anonymes.
Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.
Le fait d'être membre vous permet d'avoir des options supplémentaires.