REMPLIR LES CELLULES D'UNE GRID TELLE LA MANIÈRE D'EXCEL

Silmon Messages postés 85 Date d'inscription mardi 6 janvier 2004 Statut Membre Derniè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.

https://codes-sources.commentcamarche.net/source/24894-remplir-les-cellules-d-une-grid-telle-la-maniere-d-excel

RECHACHEHouari
9 janv. 2018 à 10:53
c'est génial
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és 85 Date d'inscription mardi 6 janvier 2004 Statut Membre Derniè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:

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