[VBA] Correction auto via listes

Bonsoir,

Pour une fois, avant de me lancer directement dans un projet je préfère venir vous consulter avant de compliquer les choses.

J'ai dans mon document Excel 2 colonnes (pour le fichier d'exemple) :

Colonne A : nom d'espèces

Colonne B : type

J'aimerais avoir un UserForm qui soit capable de me lister les différentes espèces qui présentent des "types" différents. Cela signifie qu'il y a une erreur dans la saisie. Il faut donc qu'une liste de résultats soit proposés pour corriger l'erreur sur l'ensemble des lignes.

Pour simplifier les choses, peut-on faire ainsi :

Si, pour le même nom d'espèce 2 types différents sont renseignés, alors l'ajouter à une liste.

Ensuite, un userform s'affiche avec une listbox qui liste chaque espèce qui pose problème, on sélectionne une espèce. A la sélection, une seconde listbox (initialement grisée) devient cliquable et qui liste :

"Très fort", "Fort", "Modéré", "Faible", "Très faible", "Nul").

Une fois le choix fait, on peut passer sur une autre espèce, s'il y en a une.

Il se peut que le document ait à traiter quelques milliers de lignes, c'est pourquoi j'essaie de ne pas passer par des procédure trop longue à s'exécuter.

Je vous remercie de votre attention !

Si vous avez une meilleure solution je suis bien évidemment preneur.

Bonne soirée,

A plus tard !

Salut Le Drosophile,

Si j'ai bien compris, tu aimerai un UF avec deux listes : la première qui liste les différentes espèces ayant un type différent et la seconde qui liste les différents types de cette espèce entré dans la base de donnée ?

Autre question : les espèces sont-elles toujours les unes à la suite des autres ? Je veux dire si l'espèce X est de la ligne 2 à 8, on ne pourra pas trouver une ligne avec cette espèce à la ligne 87 par exemple ? Je ne sais pas si j'ai été très clair

Bonne journée,

Baboutz

Bonsoir,

Voici un document Excel qui présente une partie de ce que je cherche à faire.

Il reste une erreur : "Incompatibilité de type" parce que je ne sais pas comment lui faire comprendre ceci :

Si tu trouve des valeurs identiques à celles sélectionnées dans la ListBox1 en [colonne F] ("nom_scientifique") alors, tu remplace la valeur de la cellule correspondante en [colonne H] ("enjeu") par ce qui a été sélectionné dans la ComBox1.

Il faut que ça fonctionne avec "x" sélections depuis la ListBox1.

Je me suis beaucoup inspiré du code de ric que je remercie encore pour toute l'aide apportée.

J'ai quelques requêtes pour peaufiner cet outil :

  • Si vous savez comment classer une listBox de manière à ce que les codes apparaissent toujours dans un ordre précis, exemple : "Très fort, Fort, Modéré, Faible, Très faible".
  • Les espèces listées dans la ListBox1 (UF1) correspondent aux espèces qui présentent des enjeu différents (il ne peut y en avoir qu'un seul), peut-on faire apparaître dans la ListBox les différents enjeux qui ont été trouvés pour ces espèces ?
  • Si vous avez également des solutions pour optimiser le code je suis preneur ! On sait jamais

Merci de votre attention.

Bonne soirée !

Autre question : les espèces sont-elles toujours les unes à la suite des autres ? Je veux dire si l'espèce X est de la ligne 2 à 8, on ne pourra pas trouver une ligne avec cette espèce à la ligne 87 par exemple ? Je ne sais pas si j'ai été très clair

Oublié de réponse

La position des espèces est variable, en revanche, elles sont toujours classées dans l'ordre alphabétique, depuis la colonne "nom_scientifique".

A plus tard !

Bonjour

Bonjour à tous

Un essai à tester, si j'ai bien compris.

Bye !

Bonjour,

Merci pour votre proposition, actuellement, lorsque je clique sur Valider, j'ai toujours l'erreur "Incompatibilité de type". Que je ne sais pas comment résoudre...

En effet. la variable t n'est pas définie :

Private Sub CommandButton1_Click()
    lrdc = dc.Range("A" & Rows.Count).End(xlUp).Row

    For e = 2 To lrdc
        If dc.Cells(e, 4) = t Then
            ...

Qu'est-elle censée représenter et que veux-tu qu'il se passe lorsque tu valides après avoir sélectionné un ou plusieurs noms et un enjeu ?

Bye !

Bonjour,

La variable t est déclarée en tant que texte.

La variable t correspond à tous les éléments qui ont été sélectionnés dans la ListBox1 (UF1).

Là où j'ai une erreur, je voudrait qu'à chaque fois qu'Excel trouve t dans la colonne F ("nom-scientifique") alors il modifie la cellule de la même ligne en colonne H ("enjeu") par ce qui a été défini dans la ComboBox1 (UF1).

Cette ComboBox présente les choix suivants : "Très fort, Fort, Modéré, Faible, Très faible", l'enjeu de toutes les espèces sélectionnées correspondra donc au choix qui aura été fait.

Dans la version que vous avez transmise cette nuit (1h39 !) la ComboBox1 n'est plus renseignée pareil (il faudrait qu'elle ne soit pas modifiée, seules les infos dans la ListBox1 peuvent être changées (classement, ajout d'informations, etc.).

Bonne journée

Nouvel essai.

Bye !

Oh super ! C'est exactement ce que je voulais faire ! Merci

Je vais l'adapter à mon document principal et faire des tests sur les différentes données, mais ça ne devrait pas poser de problème

Merci beaucoup !

Bonjour Le Drosophile, gmb,

Je n'étais pas disponible ce we, mais je suis bien content que gmb ait pu t'aider !

En espérant que ça te convient parfaitement,

Bonne journée,

Baboutz

Rechercher des sujets similaires à "vba correction auto via listes"