REMPLIR LES CELLULES D'UNE GRID TELLE LA MANIÈRE D'EXCEL
Silmon
Messages postés85Date d'inscriptionmardi 6 janvier 2004StatutMembreDernière intervention 7 mai 2007
-
3 août 2004 à 17:09
RECHACHEHouari -
9 janv. 2018 à 10:53
Cette discussion concerne un article du site. Pour la consulter dans son contexte d'origine, cliquez sur le lien ci-dessous.
merci beaucoup vous avez aidé beaucoup avec ce code.
j'ai inséré une ligne avec ton code c'est " If KeyAscii = 13 Then Exit Sub " parceque quand je tape entrée il m'affiche un caractère en arabe c'est pour cela j'ai ajouté cette ligne. merci votre code est génial.
Silmon
Messages postés85Date d'inscriptionmardi 6 janvier 2004StatutMembreDernière intervention 7 mai 2007 3 août 2004 à 17:09
Salut : Tatman37
Permet moi de te faire qq comentaires:
- 1: Je ne t'ai pas noté; et j'en profite pour dire que qui note devrait laisser un comentaire avec un minimum d'explication (on me l'a déjá fait celle-lá)
- 2: Bravo ton idée est originale.
- 3: Les 2 premieres lignes de ton code ne servent à rien:
maGrille.Col=maGrille.ColSel
maGrille.Row=maGrille.RowSel
Tu commets l'erreur commun de confondre les propriétés
ColSel et RowSel. Ces dernières ne fournissent pas la colonne ou ligne active mais la ligne/colonne d'un cliqué-deplacé de la sourie.
Par exemple:
Si Row=5 et RowSel=7, cela veut dire que la ligne active est 5 mais que l'user a selectionné jusqu'à la ligne 7
En conclusion tu peux supprimer ces deux lignes.
- 4: Ton exemple m'a appris l'utilisation du mot clé 'Empty'. Merci je l'ignorais.
- 5: En parlant de mot clé. C'est plus pro de mettre
if KeyAscii= vbKeyBack then
que
if KeyAscii= 8 then
Ça revient au meme, mais ton code sera plus lisible
- 6: Dans ton code, au lieu de:
maGrille.Text=maGrille.Text & Chr(KeyAscii)
If (KeyAscii=8) Then
maGrille.Text=Empty
End If
Il vaut mieux mettre:
If (KeyAscii=8) Then
maGrille.Text=Empty
else
maGrille.Text=maGrille.Text & Chr(KeyAscii)
End If
Sinon les codes speciaux seront traités deux fois.
- 7: Et pendant qu'on y est, il faut penser a traiter les codes:
9 janv. 2018 à 10:53
Modifié le 9 janv. 2018 à 11:07
j'ai inséré une ligne avec ton code c'est " If KeyAscii = 13 Then Exit Sub " parceque quand je tape entrée il m'affiche un caractère en arabe c'est pour cela j'ai ajouté cette ligne. merci votre code est génial.
3 août 2004 à 17:09
Permet moi de te faire qq comentaires:
- 1: Je ne t'ai pas noté; et j'en profite pour dire que qui note devrait laisser un comentaire avec un minimum d'explication (on me l'a déjá fait celle-lá)
- 2: Bravo ton idée est originale.
- 3: Les 2 premieres lignes de ton code ne servent à rien:
maGrille.Col=maGrille.ColSel
maGrille.Row=maGrille.RowSel
Tu commets l'erreur commun de confondre les propriétés
ColSel et RowSel. Ces dernières ne fournissent pas la colonne ou ligne active mais la ligne/colonne d'un cliqué-deplacé de la sourie.
Par exemple:
Si Row=5 et RowSel=7, cela veut dire que la ligne active est 5 mais que l'user a selectionné jusqu'à la ligne 7
En conclusion tu peux supprimer ces deux lignes.
- 4: Ton exemple m'a appris l'utilisation du mot clé 'Empty'. Merci je l'ignorais.
- 5: En parlant de mot clé. C'est plus pro de mettre
if KeyAscii= vbKeyBack then
que
if KeyAscii= 8 then
Ça revient au meme, mais ton code sera plus lisible
- 6: Dans ton code, au lieu de:
maGrille.Text=maGrille.Text & Chr(KeyAscii)
If (KeyAscii=8) Then
maGrille.Text=Empty
End If
Il vaut mieux mettre:
If (KeyAscii=8) Then
maGrille.Text=Empty
else
maGrille.Text=maGrille.Text & Chr(KeyAscii)
End If
Sinon les codes speciaux seront traités deux fois.
- 7: Et pendant qu'on y est, il faut penser a traiter les codes:
13 => Enter (vbKeyReturn);
3 => Ctrl+C (copier) ;
22 => Ctrl+V (coller) ;
24 => Ctrl+X (couper)
Si tu veux les ignorer alors mets: KeyAscii=0
- 8: Finalement, un select case est plus rapide qu'un gros bloc de If... elseif
- 9: Merci