Tri de données Excel

Bonjour a tous,

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
  • EMAIL
  • 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.

11classeur1.xlsx (12.30 Ko)

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 Sub

C'est un code pour ajouter un bouton sur chaque lignes (NOMCL) qui ouvre un formulaire USERFORM pour renseigner des données.

up

Rechercher des sujets similaires à "tri donnees"