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 De mon côté je vais continuer à creuser ! Si vous pouviez laisser des commentaires d'explication dans les lignes de code cela m'aiderait encore plus.

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 ! Je n'y comprend rien et cela me frustre d'avantage. Mais c'est vrai que ce petit calendrier et tout aussi efficace et en plus il marche sur la UserForm, donc nikel ! En revanche aurais-tu l'amabilité de m'expliquer la procédure pour ce genre calendrier ? Quelle différence entre les modules et les Feuilles ?

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 :

prob bob

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 ! Aurais tu la patience et le temps de laisser en commentaire des explications sur le code ?

Ps : Pas mal les nouvelles couleurs . le code présente un commentaire dans Usf_Calendrier > Private Sub UserForm_Initialize() > 'Me.Width = (Me.Width - Me.InsideWidth) + 250 * 3 / 4 je n'ai pas osé y toucher !

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 Sub

A+

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" :

prob bob 2

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 As tu de bonnes références pour les livres ou DVD avec exercices corrigés si possible ?

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+

Rechercher des sujets similaires à "tri auto croissant correction"