Macro pour liste déroulante

Excel_lent

XLDnaute Impliqué
Bonjour à tous

Pour les spécialistes du VBA :

Je suis toujours dans mes listes déroulantes.
Si les problèmes rencontrés résolvent avec les aides obtenues, il en est d'autres qui apparaissent !
J'ai construit une macro qui devrait permettre l'élimination successive des choix d'une liste déroulante.
Elle fonctionne bien au début mais déraille par la suite.
Je n'arrive pas à trouver l'erreur (raisonnement ?).

L'un d'entre vous pourrait-il m'aider ?

Par avance merci
et bonne journée

[file name=Effaceligne.zip size=8792]http://www.excel-downloads.com/components/com_simpleboard/uploaded/files/Effaceligne.zip[/file]
 

Pièces jointes

  • Effaceligne.zip
    8.6 KB · Affichages: 24

adebrux

XLDnaute Occasionnel
Salut Excel-lent,

J'ai une question par rapport à ton code.
dans B$ = Chr(Range('J12') + 64), le +64 il correspond à quoi???

Il me semble que comme en J12, c la valeur de la position de ta sélection dans ton controle qui est affectée. Donc il me semble que tes bug apparaissent quand tu comence en en haut de ta liste, ensuite, il risque d'y avoir des décalages...
Enfin, c'est qu'une hypothèse.

Pour ma part, j'ai un petit code qui marche, mais il manque un petit truc...

En fait, toute action sur ton controle me sert à valider la le choix dans ma liste de validation que j'ai mise à coté...

Il faut que je continue à creuser, mais c'est peut être un départ..

A+ Arnaud [file name=Effaceligne_20051107174314.zip size=10140]http://www.excel-downloads.com/components/com_simpleboard/uploaded/files/Effaceligne_20051107174314.zip[/file]
 

Pièces jointes

  • Effaceligne_20051107174314.zip
    9.9 KB · Affichages: 20

Charly2

Nous a quittés en 2006
Repose en paix
Bonjour Excel_lent, bonjour à toutes et tous :)

Ton problème est assez facile à résoudre en fait. Tu t'apercevras qu'en éliminant à chaque fois la dernière lettre, cela fonctionne très bien car J12 contient bien le n° d'ordre dans la plage et que celle-ci est dans l'ordre alphabétique.

Si tu supprimais le A en premier, tout serait décalé ensuite. Je m'explique, tu sélectionnes ensuite le B (position 1), le caractère renvoyé dans ta procédure sera 'A' => pas de correspondance donc pas de suppression de ligne.

Je ne sais pas si j'ai été assez clair :S

Enfin bref, je te propose le code suivant :

Code:
Sub Modif()
'
  ' La ligne à supprimer correspond la ligne 13 plus la valeur de
  ' J12 -1 (puisque si G13 est choisi, c'est 1 qui est renvoyé en
  ' J12
  Feuil1.Rows(13 + Range('J12').Value - 1).Delete
  Range('J12').Value = ''
End Sub

Voili voilà ;)

Amitiés
Charly
 

adebrux

XLDnaute Occasionnel
ca y est, g trouvé ma solution à mon probleme.
Par contre, fait gaffe au fait que dans ce que je t'ai donné, je n'ai pas affecté de nom de variable au paramètres qui changes, donc à chaque changement, quel qu'il soit, ca doit merdouiller...

Bon courage pour la suite

PS: Charly, je pense que je voulais dire la même chose que toi, mais que je dois bien aimé me compliquer la vie !!!
A+

Arnaud [file name=Effaceligne_20051107175152.zip size=11966]http://www.excel-downloads.com/components/com_simpleboard/uploaded/files/Effaceligne_20051107175152.zip[/file]

Message édité par: adebrux, à: 07/11/2005 17:53
 

Pièces jointes

  • Effaceligne_20051107175152.zip
    11.7 KB · Affichages: 18

Excel_lent

XLDnaute Impliqué
Bonsoir adebrux, Charly2 et tous les lecteurs

Pour adebrux :

Le clic sur un des éléments de la liste déroulante, renvoie dans la cellule liée, un nombre.
Dans mon exemple, j'aurais préféré avoir la lettre. Je convertis donc ce nombre en caractère (dans la ligne 'B$...'. Ce que permet 'Chr'.
Le code ASCII du A étant 65, j'ajoute, à 64, 1, 2 , 3 … pour obtenir la liste alphabétique.
Je n'ai pas encore regardé ta proposition, je suis allé voir Charly
Pour Charly2 :

Je savais bien que tu me proposerais une solution. Bien sûr je l'adopterai dans mon étude. J'ai eu quand même un petit problème :
dans: Feuil1.Rows(13 + Range('J12').Value - 1).Delete ,il y a bien un retour à ligne, n'est ce pas ?
mais à quoi correspond &n bsp; ? J'ai un message d'erreur !
En écrivant plutôt Range('J12') = '', j'efface bien la fenêtre de la liste.
Je n'ai pas bien compris pourquoi mon code est défectueux.

Pour tout le monde :

Dans mon étude, la liste contient des nombres.
Par souci de lisibilité, je les ai remplacés par des lettres.
Je pratique souvent ainsi mais la saisie d'une liste alphabétique est fastidieuse.
D'où la raison de mon post
Lien supprimé

Avec tous remerciements,
Cordialement, Excel_lent
 

Charly2

Nous a quittés en 2006
Repose en paix
Re-bonsoir à tous :)

Pour les &nbsp, je ne suis pas responsable :) :)

Il faut les supprimer car ça doit être une mauvaise traduction des espaces quand on utilise 'Code'. En html, &nbsp correspond à un espace, mais pas &n bsp ;)

J'ai lu ça dans pas pas d'autres posts aussi, il faut supprimer tous ces caractères superflus...

Pour ton message sur l'astuce clavier, je n'avais pas d'autre proposition que celle qui t'a été faite :unsure:

Amitiés
Charly
 

Excel_lent

XLDnaute Impliqué
Re Bonsoir adebrux, Charly2 et tous les lecteurs

Pour adebrux :

On m'avait déjà proposé, pour un autre thème, de passer par une liste de validation.
Seulement je suis coincé pour lancer ma macro !

Pour Charly2 :

Je balise avec les balises. J'ai du mal à les gérer (pas assez entraîné !!!).
Par exemple, je n'arrive pas à mettre mes liens en bleu. J'ai essayé [color..; ---- puis [Url][color ---. Dans le... Merci à tous 2 et bonne soirée à tous
 

Charly2

Nous a quittés en 2006
Repose en paix
Re à tous,

Pour les balises URL, c'est une fois placées que je sélectionne mon texte entre les 2 et que je lui applique une mise en forme...

Ça donne donc URL][COULEUR..]LIEN[/COULEUR..][URL.

Bonne soirée à tous
Charly
 

Discussions similaires

Statistiques des forums

Discussions
312 305
Messages
2 087 077
Membres
103 455
dernier inscrit
saramachado