Tri d'ordre alphabétique ComboBox mais autres données plus associées

1. Pour le tri : essayez en enlevant le 2 juste après ADD. J'ai déjà eu ce souci il y a quelques années sur une autre demande

2. J'ouvre le formulaire, puis je veux taper admettons "FFF", dès

On peut mettre un code qui par double click dans la combo, supprime ce que vous avez mis. C'est pratique mais Intérêt ou pas ?

3. Le code pour remplacer me permet à la création d'un nouveau fichier de cliquer dans "Date de demande" et d'effacer tout le reste

Je suppose que vous parlez du code Modifier ?
Bah là cela ne sert pas car au départ vous avez déjà les jj/mm/aaaa dans les autres textbox. Donc là je pense que vous faites des lignes inutiles.
Vous avez déjà des Exit, afterupdate etc....
il faut bien comprendre que lorsque vous faites une action, il y a d'autres codes que vous avez mis qui s'exécutent à l'arrière plan.

4. Pour le dernier point si dans le formulaire je sélectionne le document "F00049" qui est cocher en temps que formulaire, et que je veux le passer en liste celà ne fonctionne pas, quand je coche et que je fais modifier il reste en formulaire

Edit : Ok je pense avoir compris. Si vous cocher une option elle n'est pas reportée sur la feuille. Pour corriger allez dans le code Modifier, remplacez ces lignes à la fin du code :

        For Each ctrl In Me.Controls
            If TypeName(ctrl) = "OptionButton" Then
                If ctrl.Value = True Then .Item(ligne, 2) = ctrl.Caption: Exit For
            End If
        Next ctrl

1. C'était bien le 2!!! Merci beaucoup

2-3. Je n'ai pas mis un double click j'ai mis que quand on rentrait dans la première textbox on réinitialisait tout, ça suffira pour le moment.

4. C'est bien ça parfait ça fonctionne parfaitement!

Merci beaucoup je clôture comme résolu :)

Bonjour,

Dernière petite question.
J'ai passé la matinée dessus mais ça ne fonctionne pas.

Je voudrais comparer mes dates, c'est à dire qu'elles soient dans un ordre chronologique entre la demande et la date de diffusion et si ce n'est pas le cas j'affiche une erreur pour dire de vérifier les dates.
Quand tout est rempli pas de soucis, mais il est possible qu'un champ ne soit pas rempli immédiatement et donc que la date prenne la valeur "jj/mm/aaaa".
J'ai voulu comparer en utilisant CDate()>CDate() mais lorsque la date n'est pas encore renseigné cette fonction retourne une erreur.

J'ai donc essayer de créer des conditions pour étudier chaque cas possible mais cela ne fonctionne pas je suis toujours bloqué avec le CDate.

L'idée serait de ne pas comparer une date qui est = à "jj/mm/aaaa"

Si tu étudies mon cas, je te remets le fichier actuel avec mon essai de ce matin dans "modifier_click".

Merci

Bonjour

En lisant, je me dis et si vous faisiez un simple contrôle par une boucle qui controle que chaque date mentionnée entre D et G est égale ou supérieure à la date de la colonne précédente ?

Le controle se ferait bien entendu si une date est mentionnée car là je vois que par exemple sur la ligne 13 on a juste une date en colonne E. cela suppose donc que l'on ne devrait pas avoir de date dans les colonnes précédentes.

Votre avis ?

Je vois ce que vous voulez dire.

Mais le but est que si lors du formulaire la personne renseigne une date précédente une autre date sans que cela soit possible alors il y a un message d'erreur.

Ce n'est pas le cas partout dans mon fichier mais à l'avenir la Colonne C aura forcément une date et dans le formulaire il n'est pas possible d'ajouter une date ou de modifier sans que la donnée "demande de modif" ne soit rentrée.

Pour résumer il y a forcément une date dans le formulaire en "demande modification" et si une date est ajouté dans un champ suivante il faut toujours vérifier que cela soit toujours postérieur aux dates précédentes qui ont pu être renseigné et si une date n'est pas renseigner alors "on ignore la comparaison"

Je ne sais pas si c'est plus claire? Le but étant de bloqué l'utilisation dans le formulaire pour ne pas "tricher sur la date" ou "éviter une erreur de frappe par exemple"

Merci

Bonjour

Pourquoi cette instruction Load Userform1 alors que Userform1.Show suffit ?

Ce n'est pas le cas partout dans mon fichier mais à l'avenir la Colonne C aura forcément une date et dans le formulaire il n'est pas possible d'ajouter une date ou de modifier sans que la donnée "demande de modif" ne soit rentrée.

Donc on peut considérer qu'à chaque ajout, la date de modification (Date_modif) doit être renseignée.

On peut faire un code spécifique qui va contrôler :
- que la date de modification est bien remplie en cas d'ajout ou de modification.
- que chacune des dates mentionnées est toujours supérieur ou égale à la date de modification
OK pour vous ?

NB :
Par contre je vois ceci cette ligne qui n'a pas trop de sens. Mettre un format sur une cellule vide ???

If Appro_prod = "jj/mm/aaaa" Then .Item(ligne, 4) = Format("", "dd/mm/yyyy")

Faites ceci plutôt

If Appro_prod <> "jj/mm/aaaa" Then .Item(ligne, 4) = Format(Appro_prod, "dd/mm/yyyy") else .Item(ligne, 4).clearcontents

Cela supprimera la date éventuelle dans la colonne 4 si par hasard vous remettrez jj/mm/aaaa dans la textbox (cas de changement ou d'erreur par exemple)


@dysorthographie : Pourquoi cette instruction Load Userform1 alors que Userform1.Show suffit ?

Load userform vous oblige à passer par la sub initialize au préalable.
Show est utilisé si par exemple votre Userform est déjà chargée et que vous l'avez masquée via un Hide (par exemple parce que vous avez une deuxième Userform). Dans ce cas la Sub initialize ne sert pas. il vous suffit d'utiliser le Show pour qu'elle revienne à l'avant plan
Si vous n'avez qu'une Userform, au lancement vous pouvez utilisez Show seulement mais autant partir du principe que Load et Show sont tous les deux utiles au démarrage.

Oui c'est bien ça date modif doit toujours être renseigné mais j'ai déjà fait un code pour ça.

Dans tout les cas il faut que ça soit supérieur à "date_modif" mais si (par exemple) la date d'approbation AQ est supérieur à la date de prise de connaissance ce n'est pas possible pour il faut aussi vérifier ça et ceci pour chaque cas. Sachant que les champs ne sont pas forcément renseignés de suite et donc il ne faut pas créer d'erreur si ce n'est pas complété. Je vous mets un exemple en photo.
Et c'est ce que j'ai essayé de faire avec mon code mais ça ne fonctionne pas, cela n'est peut être pas possible.

image

J'ai une autre petite idée qui me passe par la tête je vais l'essayer.

J'ai réessayer autrement en intégrant des blocs if pour passer à la suite et tester les possibilités à chaque fois, ça marche pour le premier bloc "Else If" puis ensuite il valide mai sans vérifier les conditions, je pense que mon écriture du code n'est pas correcte.

Bonjour

Essayez en remplaçant votre code Modifier par celui dans le fichier joint

11modifier.txt (2.64 Ko)

On suppose comme vous l'aviez mentionné que la date_modif est toujours renseignée

Bonjour,

Ca fonctionne super bien quand les dates sont toutes renseignées mais j'ai toujours le problème si jamais une date n'est pas renseignée, il m'affiche l'erreur ce que je ne voudrais pas, je voudrais qu'il l'ignore.

image image

Bizarre cela fonctionnait pourtant avant que je ne vous poste

Vous pouvez faire ce test :
- ouvrez l'usf
- ne modifiez aucune date
- cochez une autre option dans l'encart Catégorie
- cliquez sur Modifier

Cela vous renvoie quoi ?

Si je change la catégorie et que je clique sur "Modifier" il me change bien la catégorie.

image

Il ne renvoi rien de particulier

Arrache cheveux ce truc là car le fait que vous avez nommé les textbox complique un peu.
Les jj/mm/aaaa n'aident pas du tout

Essayez un peu en prenant le code dans le fichier joint

12modifier.txt (3.67 Ko)

A noter que vous pourriez réduire judicieusement en supprimant les codes Private Sub Datedif_AfterUpdate() pour le contrôle des dates et en ajoutant juste l'instruction MSGBOX du code Private Sub Datedif_AfterUpdate() dans la code change.

Le code fonctionne très bien jusque 3 dates rentrées mais au delà je ne sais pas pourquoi il affiche une erreur quelque soit la date.

J'ai beau regarder le code je ne comprends pas pourquoi, j'ai fais des tests, si on rentre "Prise co" en plus et que je supprime le bloc lié à "Priseco" l'erreur s'affiche quand même, bizarre.

En exemple : Les 2 screens en dessous marche, tandis que les 2 derniers ne marche pas

image image image image

J'ai trouvé l'erreur!!
Ton code marche très bien merci beaucoup! Il s'agit en fait que dans le code pour certaines date il fallait inverser le "<" en ">" pour respecter l'ordre chronologique.

J'en ai fini avec ça normalement tout est ok.

Merci beaucoup encore pour ton aide, j'en ai appris énormément!

Rechercher des sujets similaires à "tri ordre alphabetique combobox donnees associees"