classement des données par ordre alphabetique

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

filierfilier

XLDnaute Junior
Bonjour,
Je voudrai que suite à la saisie de mon formulaire, le noms et les données soient insérées dans la feuille Stock_initial par ordre alphabétique.
VB:
Private Sub b_validation_Click()
   '--- Contrôles
   If Me.Produit = "" Then
      MsgBox "Veuillez saisir un nom de produit!"
      Me.Produit.SetFocus
      Exit Sub
   End If
      If Me.Conditionnement = "" Then
      MsgBox "Veuillez aisir un conditionnment!"
      Me.Conditionnement.SetFocus
      Exit Sub
   End If
    If Not IsNumeric(Me.Quantite) Then
      MsgBox "Veuillez saisir une quantité!"
      Me.Quantite = ""
      Me.Quantite.SetFocus
      Exit Sub
   End If
   If Not IsNumeric(Me.Prix) Then
      If Me.Prix = "" Then
      Me.Prix.Value = Me.Prix.Value & " €"
      MsgBox "Veuillez saisir un prix du produit!"
      Me.Prix.SetFocus
      End If
      Exit Sub
   End If

   '--- Positionnement dans la base
   [A65000].End(xlUp).Offset(1, 0).Select
   '--- Transfert Formulaire dans BD
   ActiveCell.Offset(0, 0).Value = Me.Produit
   ActiveCell.Offset(0, 1).Value = Me.Conditionnement
   ActiveCell.Offset(0, 2).Value = Me.Quantite
   ActiveCell.Offset(0, 3).Value = Me.Prix.Value & "€"
   ActiveCell.Offset(0, 9).Value = Me.Fournisseur
   
   '--
   nettoie
End Sub
Merci de vos réponses 🙂
 
Dernière édition:
Re : classement des données par ordre alphabetique

Bonjour filierfilier,

Tant qu'à utiliser les bonnes balises (merci mromain!), modifie ton message de départ et supprime l'espace dans [ /Highlight] (tout à la fin de ton message).

Pour le reste, sans fichier, difficile (pour moi, en tout cas 🙁) de proposer un code qui ait des chances de fonctionner.
Ceci dit, pourquoi ne pas utiliser l'enregistreur de macro, pour générer les lignes de codes concernant un tri, puis de les injecter dans la macro existante?
 
Re : classement des données par ordre alphabetique

Merci pour la réponse, la correction de balise est faite...
Voici le fichier dont je voudrai que chaque nouveau enregistrement, soit classé et inséré dans la colonne A (Cellule A5:A350) par ordre alphabétique avec bien sur les valeurs attribuées en même temps. voir en évitant les doublons !


Ce lien n'existe plus
Ce lien n'existe plus
 
Re : classement des données par ordre alphabetique

Bonsoir filierfilier,

Ci-dessous, l'unique portion de ton code que j'ai modifiée, qui copie une ligne existante et l'insère en ligne 6 (pour conserver les formules), puis trie les enregistrements, sur la colonne A.
Je joins ton fichier, puisque j'ai modifié quelques petites choses: supprimé des cellules fusionnées, ré-arrangé les titres de colonnes de ton tableau, déplacé une cellule (avec liste de validation ... voir colonne M), supprimé la colonne I de départ (dont je ne sais toujours pas à quoi elle servait)
Il y a des liens vers un autre fichier [achats fournisseurs.xls] pour une ribambelle de cellules nommées ... Impossible donc de vérifier le fonctionnement de tout le code, en l'absence dudit fichier. Pour alléger, j'ai supprimé tous les noms. Ne regarde donc que la structure du tableau et la partie de code modifié.
Dans les formules en colonnes F, G & H, je ne comprends pas bien l'intérêt de la fonction INDIRECT 😕 ... j'ai donc laissé tel quel, sans conviction.

Pour la gestion des doublons, il faudra que tu décides quand deux enregistrements sont considérés comme doublons (nom produit ou nom produit et conditionnement !? Quid si prix différents?, etc ...)

VB:
Private Sub b_validation_Click()

[...]
   '--- Positionnement dans la base
   '--- Transfert Formulaire dans BD

   'début des modifs
   With Sheets("STOCK_INITIAL")
   .Range("6:6").EntireRow.Copy 
   .Range("6:6").Insert
   .Cells(6, 1).Value = Me.Produit
   .Cells(6, 2).Value = Me.Conditionnement
   .Cells(6, 3).Value = Me.Quantite
   .Cells(6, 4).Value = Me.Prix.Value & "€"
   .Cells(6, 9).Value = Me.Fournisseur
   .Range("A4").CurrentRegion.Sort Key1:=.Range("A4"), Order1:=xlAscending, Header:=xlYes, _
         MatchCase:=False, Orientation:=xlTopToBottom
   End With
   'fin zone modifiée

   '--
   nettoie
End Sub

Bon travail,
 

Pièces jointes

Re : classement des données par ordre alphabetique

Bonjour, super, je vais voir cela mais cela a l'air très bien. Il est vrai que ce fichier est relié à d'autres. quand à la fonction indirect, sert aussi à insérer ces mêmes produit dans une feuille catalogue pour les commandes. Merci qui " MODESTE ", pour ce petit coup de main. 😉
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

Réponses
4
Affichages
732
Réponses
2
Affichages
411
Réponses
5
Affichages
910
Retour