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

Silmon 85 Messages postés mardi 6 janvier 2004Date d'inscription 7 mai 2007 Dernière intervention - 3 août 2004 à 17:09 - Dernière réponse :  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.

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

Afficher la suite 
Silmon 85 Messages postés mardi 6 janvier 2004Date d'inscription 7 mai 2007 Dernière intervention - 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
RECHACHEHouari - 9 janv. 2018 à 10:52
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.
Commenter la réponse de Silmon

3 réponses

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.