Supprimer les données d'une Flexgrid [Résolu]

Dbratt 29 Messages postés samedi 22 octobre 2011Date d'inscription 10 novembre 2011 Dernière intervention - 9 nov. 2011 à 22:15 - Dernière réponse : Dbratt 29 Messages postés samedi 22 octobre 2011Date d'inscription 10 novembre 2011 Dernière intervention
- 10 nov. 2011 à 23:05
Bonsoir,

Etant débutant en VB6, j'aimerai savoir comment supprimer les données contenues dans une flexgrid ( 30 lignes et 8 colonnes) tout en gardant la première ligne.

pour le faire j'ai écris le code ci-dessous:

Private Sub Cmdclear_Click()

Dim k as integer

    For k = 1 To 30
        frmRecapAvantOrdo.RemoveItem k
    Next k
    
End Sub


Quand je l'exécute, j'ai une erreur du type " La grille ne contient pas cette ligne " et la 2ieme ligne ( après celle indiquant les titres des colonnes) ne s'efface pas. et a ce moment la k a pour valeur 16

je vous remercie

Cordialement
Afficher la suite 

Votre réponse

14 réponses

Meilleure réponse
LIBRE_MAX 1403 Messages postés mardi 1 mai 2007Date d'inscription 7 octobre 2012 Dernière intervention - 10 nov. 2011 à 22:46
3
Merci
désactives le .Redraw pour voir.

Sinon ,et pour réponds à ta question de départ.

With Me.frmRecapAvantOrdo
For i= 1 To .Rows-1
For j= 0 To .Cols-1
.TextMatrix(i,j)=""
Next
Next
End With

Ceci efface le contenu des lignes à compter de la première non fixe.

(sans trop se prendre la tête ).






[] Ce qui va sans dire. va mieux en le disant.

Merci LIBRE_MAX 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 118 internautes ce mois-ci

Commenter la réponse de LIBRE_MAX
ucfoutu 18039 Messages postés lundi 7 décembre 2009Date d'inscriptionContributeurStatut 11 avril 2018 Dernière intervention - 9 nov. 2011 à 22:46
0
Merci
Bonjour,

1) comment a été alimentée cette flexgrid (c'est important) ?
2) quand on efface, on commence par le bas et on remonte (sinon : crocher-pieds avec les n°s de ligne) ===>>
For k = 30 To 1 step -1

____________________
Réponse exacte ? => "REPONSE ACCEPTEE" pour faciliter les recherches d'autres forumeurs.
Pas d'aide en ligne installée ? ==> ne comptez pas sur moi pour simplement vous dire ce qu'elle contient
Commenter la réponse de ucfoutu
Dbratt 29 Messages postés samedi 22 octobre 2011Date d'inscription 10 novembre 2011 Dernière intervention - 10 nov. 2011 à 00:12
0
Merci
Bonsoir,

Tout d'abord merci pour votre réponse

je saisis directement dans la flexgrid. Donc a la fin de la saisie, l'utilisateur aura le choix entre enregistrer la saisie ou l'effacer.
pour l'enregistrement j'ai pas de problème mais effacer j'ai des difficultés.

j'ai re-ecris ceci :

Private Sub Cmdclear_Click()

    For k = 30 To 1 Step -1 
        frmRecapAvantOrdo.RemoveItem k
    Next k
    
End Sub


Mais il efface bien toutes les lignes sauf la dernier et je un message d'erreur "impossible de supprimer la derniere ligne non-fixe "
Aussi s'il vous plait j'aimerai savoir s'il est possible d'effacer juste le contenu des ligne (juste le texte). Genre après avoir effacé, les lignes restent présentes mais pas les textes quelles comportaient.

j'ai essaye le code ci-dessous il efface bien que le contenu des lignes mais il efface aussi le contenu de la ligne fixe( titre des colonnes) et c'est ça qui me dérange

Private Sub Cmdclear_Click()

    For k = 1 to 30
        frmRecapAvantOrdo.Clear
    Next k
    
End Sub


cordialement
Commenter la réponse de Dbratt
ucfoutu 18039 Messages postés lundi 7 décembre 2009Date d'inscriptionContributeurStatut 11 avril 2018 Dernière intervention - 10 nov. 2011 à 01:03
0
Merci
Bé !
frmRecapAvantOrdo.Clear

efface/supprime tout ! Et tu le fais 30 fois !
Je ne me sers plus depuis trop longtemps de flexgrid pour te renseigner avec ptécision.
Mais on va essayer :
1) tu n'as pas répondu à ma question : "comment as-tu rempli ta flexgrid (le code) ?)
2) quelles sont ses propriétés (les valeurs) fixedcols et fixedrows ?
3) combien de rangs contient-elle en tout (celui d'en haut compris) ?
3) que contient la ligne d'index 1 ?

Pour juste effacer, ma foi, il suffit d'y mettre "" à chaque article ! mais ce n'est- pas une "bonne" solution du tout !

Maintenant : si tu as 30 lignes en tout, tu devrais normalement avoir :
la propriété .rows = 30
la propriété .fixedRows = 1 (si tu n'as qu'une ligne d'entête)

Si la propriété .fixedRows a été mise malencontreusement à 2, il est clair qu'il n'est pas possible de supprimer l'item d'index 1 !
Vois tout cela et renseigne-nous avec ces précisions indispensables

____________________
Réponse exacte ? => "REPONSE ACCEPTEE" pour faciliter les recherches d'autres forumeurs.
Pas d'aide en ligne installée ? ==> ne comptez pas sur moi pour simplement vous dire ce qu'elle contient
Commenter la réponse de ucfoutu
ucfoutu 18039 Messages postés lundi 7 décembre 2009Date d'inscriptionContributeurStatut 11 avril 2018 Dernière intervention - 10 nov. 2011 à 01:09
0
Merci
Mais attends ! On va lui "forcer la main", à ta flextgrid, ainsi :
Private Sub Cmdclear_Click()
    frmRecapAvantOrdo.FixedRows = 1 '<<<===  on force ici la main, pour le cas où tu l'aurais mis à 2 !
    For k = 30 To 1 Step -1 
        frmRecapAvantOrdo.RemoveItem k
    Next k
End Sub

Que se passe-t-il, de cette manière ? (ta réponse nous éclairera sans doute).


____________________
Réponse exacte ? => "REPONSE ACCEPTEE" pour faciliter les recherches d'autres forumeurs.
Pas d'aide en ligne installée ? ==> ne comptez pas sur moi pour simplement vous dire ce qu'elle contient
Commenter la réponse de ucfoutu
ucfoutu 18039 Messages postés lundi 7 décembre 2009Date d'inscriptionContributeurStatut 11 avril 2018 Dernière intervention - 10 nov. 2011 à 01:37
0
Merci
Et prends l'habitude d'apporter le plus grand soin à ce que tu fais, ce que tu affirmes, etc...
Exemple de légèreté pour le moins fâcheuse :
voilà ce que tu as rapporté, comme erreur :
"impossible de supprimer la derniere ligne non-fixe "
Or, le message d'erreur que tu as reçu ne risquait pas d'être celui-ci ! Il disait même le contraire !
____________________
Réponse exacte ? => "REPONSE ACCEPTEE" pour faciliter les recherches d'autres forumeurs.
Pas d'aide en ligne installée ? ==> ne comptez pas sur moi pour simplement vous dire ce qu'elle contient
Commenter la réponse de ucfoutu
Dbratt 29 Messages postés samedi 22 octobre 2011Date d'inscription 10 novembre 2011 Dernière intervention - 10 nov. 2011 à 13:06
0
Merci
Bonjour,

Je repondrai aux question que vous m'avez posees par ordre:

1) tu n'as pas répondu à ma question : "comment as-tu rempli ta flexgrid (le code) ?)

'Saisie des produits de leur duree ainsi que leur delai dans le formulaire RECAP

Private Sub frmRecapAvantOrdo_KeyDown(KeyCode As Integer, Shift As Integer)
If frmRecapAvantOrdo.Text <> "" Then
Select Case KeyCode
Case 8 'backspace
frmRecapAvantOrdo.Text = Left(frmRecapAvantOrdo.Text, (Len(frmRecapAvantOrdo.Text) - 1))
Case 46 'suppr
frmRecapAvantOrdo.Text = ""
End Select
End If
End Sub

'Saisie des produits de leur duree ainsi que leur delai dans le formulaire RECAP

Private Sub frmRecapAvantOrdo_KeyPress(KeyAscii As Integer)

If KeyAscii > 28 Then  'av cette condition on peut restreindre les entrées utilisateurs en
'autorisant seulement les chiffres par ex. la on interdit juste les caracteres non gérés par windows
frmRecapAvantOrdo.Text = frmRecapAvantOrdo.Text & Chr(KeyAscii)
End If

End Sub


2) quelles sont ses propriétés (les valeurs) fixedcols et fixedrows ?

fixedcols=0
fixedrows=1

3) combien de rangs contient-elle en tout (celui d'en haut compris) ?

si le rang c'est le nombre de lignes alors il y a 30 rangs celles du haut compris

3) que contient la ligne d'index 1 ?

'remplissage des titres de colonnes recap avant ordonnancement

Me.frmRecapAvantOrdo.Row = 0 'tous les champs sont a la ligne zero
Me.frmRecapAvantOrdo.Col = 0
Me.frmRecapAvantOrdo.Text = "Code Produits"
Me.frmRecapAvantOrdo.Col = 1
Me.frmRecapAvantOrdo.Text = "Code Ressources"
Me.frmRecapAvantOrdo.Col = 2
Me.frmRecapAvantOrdo.Text = "Heure Debut"
Me.frmRecapAvantOrdo.Col = 3
Me.frmRecapAvantOrdo.Text = Format("Durees (H)", "gras")
Me.frmRecapAvantOrdo.Col = 4
Me.frmRecapAvantOrdo.Text = "Delais (H)"
Me.frmRecapAvantOrdo.Col = 5
Me.frmRecapAvantOrdo.Text = "Heure de Fin"
Me.frmRecapAvantOrdo.Col = 6
Me.frmRecapAvantOrdo.Text = "Marge (H)"


pour mon message d'erreur c'est exactement mot pour mot l'erreur qui m'est affichée j'ai une image de cela mais j'ai pas réussi a vous l'envoi le code erreur est : erreur d’exécution "30015" impossible de supprimer la derniere ligne non fixe

Esperant avoir repondu de facon clair a toutes vos questions je vous remercie.
Commenter la réponse de Dbratt
LIBRE_MAX 1403 Messages postés mardi 1 mai 2007Date d'inscription 7 octobre 2012 Dernière intervention - 10 nov. 2011 à 18:08
0
Merci
Salut,

With Me.frmRecapAvantOrdo
.Clear
.FixedRows=1
.Rows=2
End With [] Ce qui va sans dire. va mieux en le disant.
Commenter la réponse de LIBRE_MAX
Dbratt 29 Messages postés samedi 22 octobre 2011Date d'inscription 10 novembre 2011 Dernière intervention - 10 nov. 2011 à 18:53
0
Merci
Bonsoir Libre_Max

Votre code marche bien mais il n'efface pas que le contenu de la flexgrid il supprime tout (lignes,colonnes et texte) et ne laisse que la ligne fixe et la première ligne non fixe.

J'aimerai bien que quand l’opérateur clic sur le bouton clear, la flexgrid reste intacte (ligne et colonne restent visibles) mais seul les écritures (texte) s'effacent.

pour être plus claire supposons que vous avez un format A4 sur lequel vous avez dressé un tableau (flexgrid) et vous le remplissez avec du texte c'est dont ce texte et rien que ce texte que je souhaiterai effacer si possible.

Merci beaucoup
Commenter la réponse de Dbratt
LIBRE_MAX 1403 Messages postés mardi 1 mai 2007Date d'inscription 7 octobre 2012 Dernière intervention - 10 nov. 2011 à 19:47
0
Merci
Ton code sera plus optimisé si tu metS le tout dans une procedure REECRIRE, que tu appelleras à chaque remplissage.

SUB REECRIRE()
With Me.frmRecapAvantOrdo
.Redraw=False
.Clear
.FixedRows=1
.Rows=2

.Row = 0 'tous les champs sont a la ligne zero
.Col = 0
.Text = "Code Produits"
.Col = 1
.Text = "Code Ressources"
.Col = 2
.Text = "Heure Debut"
.Col = 3
.Text = Format("Durees (H)", "gras")
.Col = 4
.Text = "Delais (H)"
.Col = 5
.Text = "Heure de Fin"
.Col = 6
.Text = "Marge (H)"

.Rows=30

'tu remplis ensuite une à une les lignes de ton flexgrid.

.Redraw=True

End With

End Sub



[] Ce qui va sans dire. va mieux en le disant.
Commenter la réponse de LIBRE_MAX
LIBRE_MAX 1403 Messages postés mardi 1 mai 2007Date d'inscription 7 octobre 2012 Dernière intervention - 10 nov. 2011 à 19:51
0
Merci
Ah , j' au oublié !

With Me.frmRecapAvantOrdo
.Redraw=False
.Clear
.FixedRows=1
.Rows=2
[b].Cols=6
... /b [] Ce qui va sans dire. va mieux en le disant.
Commenter la réponse de LIBRE_MAX
Dbratt 29 Messages postés samedi 22 octobre 2011Date d'inscription 10 novembre 2011 Dernière intervention - 10 nov. 2011 à 20:22
0
Merci
Bonsoir,

Ce code n'a aucun effet ! j'ai l'impression que le " .Redraw=False " bloque l'execution de la suite car quand je le mets en commentaire il s'execute comme l'ancienne version du code.

Cordialement
Commenter la réponse de Dbratt
LIBRE_MAX 1403 Messages postés mardi 1 mai 2007Date d'inscription 7 octobre 2012 Dernière intervention - 10 nov. 2011 à 22:55
0
Merci
oublies le

"désactives le .Redraw pour voir. "

décidement j' ai pas toute ma tête en ce moment..
[] Ce qui va sans dire. va mieux en le disant.
Commenter la réponse de LIBRE_MAX
Dbratt 29 Messages postés samedi 22 octobre 2011Date d'inscription 10 novembre 2011 Dernière intervention - 10 nov. 2011 à 23:05
0
Merci
Bonsoir,

Super le denier code marche tres bien ...

Merci beaucoup et bonne soiree a vous
Commenter la réponse de Dbratt

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.