Tri de données Excel
J'ai un fichier Excel avec les colonnes suivante :
- DATECRE
- NOMCL
- NUMCDE
- POSTE
- LIBELLE 1
- LIBELLE 2
- QUANTITE
- Prix_Tot
- DEVISEGP
- PAYS
- SECTSP
- TYPCLI
- SECTEUR
- APE
- SIREN
- VILLE
- CPOST
- DEPT
- NOMCT
- FONCT
- TEL
- DATEFACT
J'ai souhaité faire un tableau croisé dynamique mais je n'ai pas réussi a obtenir le résultat que je souhaitais.
Je souhaite que par entreprises (NOMCL, APE, SIREN, VILLE, CPOST, DEPT), ça affiche le contact en rapport donc (NOMCT, FONCT, EMAIL, TEL). Ensuite je souhaite que ça affiche les commandes dans l'ordre des dates (DATECRE, NUMCDE, POSTE, LIBELLE1, LIBELLE2, QUANTITE, Prix_Tot, DEVISEGP, PAYS, SECTSP, SECTEUR, DATEFACT) et que se soit par groupes de secteurs a la suite P1 P2 P3 (SECTSP).
J'ai besoin de votre aide svp.
Merci d'avance.
Bonjour
Plutôt que de nous faire un long discours, ne serait-il pas plus simple de joindre un fichier anonymisé
Je vous invite à lire la charte du forum [A LIRE AVANT DE POSTER]
qui vous aidera dans vos demandes et réponses sur ce forum et notamment
- Joignez (si possible) un fichier pour augmenter vos chances d'obtenir de l'aide en cliquant sur le bouton Fichier de l'éditeur. Si votre fichier est trop lourd ou contient des données personnelles, créez une version allégée de votre fichier avec juste assez d'informations pour permettre de comprendre votre problème. Dans tous les cas, ne postez JAMAIS de fichiers avec des informations personnelles ou confidentielles (cet utilitaire peut vous aider à les retirer).
Merci de votre compréhesion,
Cordialement
Bonjour,
Désolé, effectivement j'ai oublier de mettre le fichier...
Veuillez trouver joint le fichier.
Est-il possible de faire ça sous forme de logiciel VBA ?
On remplie la base et ça alimente le logiciel. Et comme ce fichier va servir pour de la prospection, je pourrais mettre un TEXTBOX pour renseigner les infos suite a l'appel téléphonique. J'avais fait un début de code avec CHATGPT :
Dim dictUserForms As Object
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Dim selectedRow As Long
Dim userFormKey As String
Dim userForm As UserForm
' Vérifier si une ligne a été sélectionnée
If Target.Rows.Count = 1 Then
selectedRow = Target.Row
userFormKey = "UserForm_" & selectedRow
' Vérifier si le UserForm existe déjà dans le dictionnaire
If Not dictUserForms.Exists(userFormKey) Then
' Si le UserForm n'existe pas, le créer
Set userForm = CreateUserForm(selectedRow)
dictUserForms.Add userFormKey, userForm
Else
' Si le UserForm existe, le rendre visible
dictUserForms(userFormKey).Show
End If
End If
End Sub
Private Function CreateUserForm(ByVal rowNumber As Long) As UserForm
Dim uf As UserForm
Dim lblNomCL As MSForms.Label
Dim txtNotes As MSForms.TextBox
Dim btnSave As MSForms.CommandButton
' Créer un nouveau UserForm
Set uf = VBA.UserForms.Add(1)
uf.Caption = "Prospection Téléphonique"
' Ajouter un label pour afficher le NOMCL
Set lblNomCL = uf.Controls.Add("Forms.Label.1", "lblNomCL", True)
lblNomCL.Caption = "NOMCL: " & Cells(rowNumber, 2).Value
lblNomCL.Top = 10
lblNomCL.Left = 10
' Ajouter une zone de texte pour saisir les notes
Set txtNotes = uf.Controls.Add("Forms.TextBox.1", "txtNotes", True)
txtNotes.Top = 40
txtNotes.Left = 10
txtNotes.Width = 200
txtNotes.Height = 100
' Ajouter un bouton Enregistrer
Set btnSave = uf.Controls.Add("Forms.CommandButton.1", "btnSave", True)
btnSave.Caption = "Enregistrer"
btnSave.Top = 150
btnSave.Left = 10
btnSave.Width = 80
btnSave.Height = 30
btnSave.OnAction = "SaveNotes"
' Associer le UserForm à la ligne correspondante
uf.Tag = rowNumber
' Retourner le UserForm créé
Set CreateUserForm = uf
End Function
Public Sub SaveNotes()
Dim userFormKey As String
Dim userForm As UserForm
Dim rowNumber As Long
' Récupérer la clé du UserForm
userFormKey = "UserForm_" & ActiveUserForm.Tag
' Récupérer le UserForm depuis le dictionnaire
Set userForm = dictUserForms(userFormKey)
' Récupérer le numéro de ligne associé au UserForm
rowNumber = ActiveUserForm.Tag
' Enregistrer les notes dans la colonne des notes de votre feuille de travail
Cells(rowNumber, 22).Value = userForm.Controls("txtNotes").Text
' Cacher le UserForm
userForm.Hide
End SubC'est un code pour ajouter un bouton sur chaque lignes (NOMCL) qui ouvre un formulaire USERFORM pour renseigner des données.