Tri puis séparation d'un onglet

RONIBO

XLDnaute Impliqué
Bonjour le forum,

J'ai encore besoin de votre aide car je me prends la tête depuis des heures et j'arrive pas à résoudre mon problème.

J'ai crée un USF qui reporte les données dans l'onglet "Clients"

J´ai intégrer un macro dans un module qui permet de trier les données ajouté depuis USF par ordre alphabétique.
Le problème est qu'il ne tient pas compte de la dernière saisie lorsque j'ajoute un nouveau client(ne me tri pas le dernier client ajouté

Deuxième problème : je souhaite séparer l'onglet Client, le mettre dans un nouveau fichier excel.
Lorsque j'ajoute un nouveau client depuis userform, je souhaite qu'il me reporte les données dans un autre fichier
Le fichier "Clients" souhaite qu'il se trouve dans :
C:/

Je vous mets un fichier exemple

Merci d'avance pour votre aide

À bientôt
 

Pièces jointes

  • Exemple.xlsm
    85.9 KB · Affichages: 59
  • Exemple.xlsm
    85.9 KB · Affichages: 53
  • Exemple.xlsm
    85.9 KB · Affichages: 52

Gelinotte

XLDnaute Accro
Re : Tri puis séparation d'un onglet

Bonsoir,

Pour le premier problème de tri après l'ajout, je suggère :

Private Sub TAjouter_Click()
Dim c As Control
Dim derligne As Long
derligne = Sheets("Clients").Range("A1000").End(xlUp).Row
For Each c In Me.Controls
If TypeName(c) = "TextBox" Then Sheets("Clients").Range("A" & derligne).Offset(1, c.Tag).Value = c.Text
Next
Trier ' << Ajouter cette ligne
Me.Hide
End Sub
 
Dernière édition:

Gelinotte

XLDnaute Accro
Re : Tri puis séparation d'un onglet

Bonjour,

Mais avant ...

- Il y a une macro derrière la feuille "Client", doit-on la conserver dans le nouveau classeur (copie de la feuille "Client") ?
__ Cela va déterminer un classeur .xlsx (sans macro) ou .xlsm (avec macro).

- Comment comptes-tu gérer qu'il puisse y avoir deux fois le même "Nom de la Société" ?
__ Je crois comprendre que ce sera le nom du nouveau classeur ... On incrémente ou on écrase ??


Gelinotte
 

RONIBO

XLDnaute Impliqué
Re : Tri puis séparation d'un onglet

Bonjour,

1- Oui je veux conserver le macro. Donc mettre au format xlsm

2- Je pense pas qu'il y aura de doublon de Client, au cas ou il y a un doublon, poser une
simple question : Voulez écraser la fiche client existante?

Créer un fichier seulement "Clients" dans c:/ (avec dedans la liste de tous mes clients), puis dans le fichier "Facture" sélectionner un client (ou créer ) grâce aux données que ce trouve dans le fichier clients

J'espère que j'étais précis

Merci encore pour le temps que tu me consacre

A+
 

Gelinotte

XLDnaute Accro
Re : Tri puis séparation d'un onglet

Bonjour,

Pour l'enregistrement de la feuille "Client", avec macro, voici une approche.

Si le fichier existe déjà l'avertissement est celui standard de Excel.

Espérant que cela puisse convenir.

Ceci est ton code derrière le userforme ...
Code:
Private Sub TAjouter_Click()
Dim c As Control
Dim derligne As Long

On Error Resume Next
derligne = Sheets("Clients").Range("A1000").End(xlUp).Row

For Each c In Me.Controls
   If TypeName(c) = "TextBox" Then Sheets("Clients").Range("A" & derligne).Offset(1, c.Tag).Value = c.Text
Next

Trier  '  trie après l'ajout d'un nouveau client

   ' copie le feuille client dans un nouveau classeur
Sheets("Clients").Select
Sheets("Clients").Copy
ActiveWorkbook.SaveAs Filename:="C:\" & Me.TextBox1.Value & ".xlsm", _
   FileFormat:=xlOpenXMLWorkbookMacroEnabled, CreateBackup:=False
ActiveWorkbook.Save
ActiveWorkbook.Close

Me.Hide
End Sub
 

RONIBO

XLDnaute Impliqué
Re : Tri puis séparation d'un onglet

Bonjour,

Merci pour ton code Gelinotte,

Avec quelque modification ça serai parfait.

Lorsque il crée le fichier dans c:
Il est possible de toujours nommer le fichier "Clients"

Tu vois l'onglet "clients" du fichier "exemple"
On peut le supprimer et travailler seulement avec le fichier qui se trouve dans c: (clients)

Lorsque j'ajoute un client, qu'il s'ajoute automatiquement dans ce fichier (c:)

a+
 

Gelinotte

XLDnaute Accro
Re : Tri puis séparation d'un onglet

Bonjour,

Pour que le nom du fichier soit toujours Clients et qu'il n'y ait pas de message d'alerte pour écraser le fichier.

Code:
   ' copie le feuille client dans un nouveau classeur
Sheets("Clients").Select
Sheets("Clients").Copy
Application.DisplayAlerts = False
ActiveWorkbook.SaveAs Filename:="C:\Clients.xlsm", _
   FileFormat:=xlOpenXMLWorkbookMacroEnabled, CreateBackup:=False
ActiveWorkbook.Save
ActiveWorkbook.Close

Pour l'autre approche, celle d'ajouter les infos du nouveau client dans le fichier fermé, ça se fait.
Mais là, j'ai plus de difficulté.

Une recherche sur ce forum, "écrire dans un classeur fermé", va générer plusieurs solutions intéressantes.


Gelinotte
 

Discussions similaires

  • Résolu(e)
Microsoft 365 Code de tri
Réponses
22
Affichages
294

Statistiques des forums

Discussions
312 166
Messages
2 085 899
Membres
103 024
dernier inscrit
rdge