Tri auto croissant + correction
Bonjour à tous, à la demande de Yvouille je crée un nouveau sujet afin que plusieurs membres puisse me venir en tête. Je précise que je suis débutant
Pour ce qui n'ont pas suivis mon poste précédent ( https://forum.excel-pratique.com/excel/ligne-vierge-classement-par-date-t31876-10.html ) je vais faire un léger récapitulatif en essayant d'être le plus explicite possible. J'ai plusieurs corrections à apporter à mon fichier, mais qui pour l'instant, ne peuvent être résolues par moi-même car mon niveau et trop faible.
Premièrement je souhaiterais effectuer un tri de ligne automatique en fonction de la colonne "date délai" (la plus proche en tête). J'ai bien un bout de code fonctionnel mais qui n'est pas adapter à mon fichier (Module_tri). J'ai déjà essayé de le modifier en vain. Pour compléter une ligne, Yvouille a eu la bonne idée d'utiliser un UserForm servant de formulaire. Cependant, avec cette méthode, le macros additionnel que j'ai installé manuellement mDF XLcalendar (dont voici le lien de téléchargement: http://www.mdf-xlpages.com/modules/TDMDownloads/singlefile.php?lid=19 ) ne s'ouvre pas lorsque l'utilisateur clique sur le "TextBox_Delai". Peut être existe t-il une solution du type : SI clic sur "TextBox_Delai" ALORS Activer "XLcalendar" ?
J'attends vos solutions
Salut Bobléponge,
Pour le tri, lorsque tu as des procédures du style "Worksheet_Xxxx", ces procédures se mettent directement dans la feuille et non dans un module
En ce qui concerne le calendrier, perso, je n'utilise pas de complément (même si celui de MdF est teès bien fait)
j'intègre directement un USF_Calendrier (avec API windows) comme ça pas de problème de compatibilité sur d'autres postes
Pour l'apparition du calendrier, tu peux utiliser l'évènement "Enter"
Fichier modifié ci-joint
A+
Salut Bruno et merci de ton aide
Lorsque j'ai vu les lignes de codes de UsF_Calendrier j'ai cru tombé en arrière !
Car j'ai constaté la présence d'une petit nouveau "Gestion".
Je rencontre un léger problème lorsque je décide de valider le formulaire, la voici :
D'après le debug il s'agirait de la ligne : Range("C" & Derlig1 & ":I" & Derlig1).Borders.Weight = xlThin
D'après ce que je vois le tri s'effectue à merveille !
Ps : Pas mal les nouvelles couleurs
Re,
T'expliquer la procédure pour le calendrier, ça va être difficile, tout ce que je peux te dire :
1) la procédure utilise des API windows pour créer dans l'USF un calendrier
2) ce calendrier peut être exporter vers un fichier ".frm" : clique droit sur l'USF -> Exporter
et peut être récupéré ensuite n'importe ou, clique droit -> Importer un fichier
Différence en module et feuille :
1) un module est là pour y mettre du code sans évènement, que l'on peut appeler à tout moment
2) une feuille est un objet du conteneur Workbook, dans laquelle on peut gérer certains évènements
Pour ton problème de bug, il faut changer le code par:
Private Sub CommandButton_Validation_Click()
Dim Derlig1 As Integer
If ComboBox_Nom = "" Then
MsgBox "Veuillez indiquer un Nom"
Exit Sub
End If
If TextBox_Article = "" Then
MsgBox "''Désignation ou code aticle'' manquant"
Exit Sub
End If
If TextBox_Nombre = "" Then
MsgBox "Veuillez saisir une quantitée"
Exit Sub
End If
If TextBox_Delai = "" Then
MsgBox "Veuillez sélectionner une date"
Exit Sub
End If
Derlig1 = Range("C" & Rows.Count).End(xlUp).Row + 1
Range("C" & Derlig1) = ComboBox_Nom
Range("E" & Derlig1) = TextBox_Article
Range("F" & Derlig1) = TextBox_Nombre
Range("H" & Derlig1) = TextBox_Delai
With Range("C" & Derlig1 & ":I" & Derlig1).Borders(xlEdgeBottom)
.LineStyle = xlContinuous
.Weight = xlThin
.ColorIndex = xlAutomatic
End With
Unload UserForm1
End SubA+
Merci pour la correction. A présent, plus d'erreur lors de la validation mais 4 autres soucis viennent s'additionner :
1- Le tri fonctionne sur les lignes saisies manuellement mais pas à l'aide du formulaire.
2- (Léger soucis de détail). Lorsque les lignes sont triées, la couleur de la ligne aussi change avec celle-ci. Il n'y a donc plus de couleur alternées donc visuellement c'est moins parlant (Mais bon ce n'est qu'un détail !
3-La première colonne (Propriété) est triée alors qu'elle devrait rester fixe. pourtant le code indique bien :
Derlig1 = Range("C" & Rows.Count).End(xlUp).Row + 1
4- Lorsque j'utilise le formulaire, une petite attention m'indique ceci pour ce qui concerne le "Nbr" :
Ok je vais me renseigner sur l'utilisation d'API Windows
Re,
Bobléponge a écrit :Merci pour la correction. A présent, plus d'erreur lors de la validation mais 4 autres soucis viennent s'additionner :
1- Le tri fonctionne sur les lignes saisies manuellement mais pas à l'aide du formulaire.
Chez moi cela fonctionne si tu rempli bien le délai, car c'est le remplissage de la colonne H qui déclenche le tri
Bobléponge a écrit :2- (Léger soucis de détail). Lorsque les lignes sont triées, la couleur de la ligne aussi change avec celle-ci. Il n'y a donc plus de couleur alternées donc visuellement c'est moins parlant (Mais bon ce n'est qu'un détail !
)
Il faut le faire par MFC (Mise en Forme Condtiionnelle) et non directement
Bobléponge a écrit :3-La première colonne (Propriété) est triée alors qu'elle devrait rester fixe. pourtant le code indique bien :
Derlig1 = Range("C" & Rows.Count).End(xlUp).Row + 1
Rien à voir avec la ligne indiquée
Le problème vient de cette ligne corrigée
Range("C2:I" & DerLig).Sort Key1:=Range("H2"), Order1:=xlAscending, Header:=xlYesça me parait pourtant plutôt clair, avant le tri commençait en colonne "A", maintenant en colonne "C"
Bobléponge a écrit :Lorsque j'utilise le formulaire, une petite attention m'indique ceci pour ce qui concerne le "Nbr" :
Effectivement, car il faut convertir les données que tu inscrit sur ta feuille
Range("F" & Derlig1) = Int(TextBox_Nombre)
Range("H" & Derlig1) = Format(TextBox_Delai, "mm/dd/yyyy")Bobléponge a écrit :Ok je vais me renseigner sur l'utilisation d'API Windows
Heuu quand tu en seras là, tu auras, beaucoup, mais beaucoup avancé dans la programmation
Si tu veux t'amuser un peu, regarde le fichier V2 avec un calendrier sans API mais un module de classe, qui gère les jours fériés
Je te mets les fichiers quelque peu corrigés
A+
Ton aide m'est très précieuse et je souhaiterais vraiment avoir ne serai-ce que la moitié de tes connaissances plus tard. Mais comme tu le dis, la route est très longue. J'ai mis les pieds dans le VBA lundi et j'ai mon cerveau qui s'embrouille
Le fichier avance très vite et il ne reste plus qu'a peaufiner quelques détails.
J'ai déjà exposé le problème à Yvouille. Il concerne la gestions des lignes par rapport à la colonne "Etat traitement". Le bouton "Supprimer les demandes traitées" doit effacer les lignes dont l'état est "Effectuée". J'ai une ébauche mais le but était préalablement différent cela ne fonctionne pas. je souhaite conserver les msgbox de confirmation.
Question à part : Combien d'année sont nécessaires pour se débrouiller un minimum en VBA, Je sais que cela dépend du potentiel de la personne mais approximativement ?
Re,
A la question : Voulez vous supprimer la totalité des demandes traîtées ?
Si l'utilisateur répond "Non" qu'est-ce que le code doit faire !?
A+
Re, Une msgbox indique : "Opération annulée" par exemple et rien ne se passe.
Re,
Voici ton fichier avec le code modifié
Au fait pour ta question
Combien d'année sont nécessaires pour se débrouiller un minimum en VBA, Je sais que cela dépend du potentiel de la personne mais approximativement ?
Cela dépend non seulement du potentiel de la personne mais de ce que l'on appelle se débrouiller
Je pense qu'en buchant un peu tous les jours pendant 1 ou 2 heures, au bout de 6 mois tu commences vraiment à avoir de bonnes bases
Perso, j'ai acheté pas mal de bouquins avec des exemples livrés sur CD et je m'y suis mis petit à petit
A+
Merci pour tout Bruno, j'ai quitté le travail donc j'aurais plaisir à regarder les corrrections demain à 8h
Pour ce qui est de mon potentiel, je n'ai pas des facilités comme certains donc je pense que si jy travail un peu tout les jours dans 1 ans ça ira
Je dois apporter quelques petites fonctionnalités supplémentaire donc si je but sur quelque chose je t'en ferai part, rien de très méchant donc ça devrai aller
A+