Tri adresses mail combobox

Résolu
romanza Messages postés 263 Statut Membre -  
romanza Messages postés 263 Statut Membre -
Bonjour,

J'ai une combobox dans un fichier Excel reprenant une liste d'adresses mail au format :

pierre.dupont@entreprise.fr

Comment puis-je classer la liste de la combo par ordre alphabétique de NOM.

Merci beaucoup

Configuration: Windows / Chrome 89.0.4389.82

14 réponses

  1. yg_be Messages postés 23437 Date d'inscription   Statut Contributeur Dernière intervention   Ambassadeur 1 588
     
    bonjour,
    cette combobox est-elle construite sur le contenu de cellules?
    si oui, il suffit de trier les cellules.
    0
  2. romanza Messages postés 263 Statut Membre 2
     
    Bonjour,

    J'y ai pensé mais il faudrait trier les cellules sur la partie du nom seulement. je sais que ça peut se faire mais la saisie des adresses mails va se faire par des utilisateurs sur une plage.
    0
    1. yg_be Messages postés 23437 Date d'inscription   Statut Contributeur Dernière intervention   1 588
       
      il suffit alors d'ajouter une formule dans une autre plage, afin d'y obtenir ce que tu appelles la partie du nom, et de faire un tri.
      quand la formule est en place, tu peux utiliser l'enregistreur de macro pour découvrir comment faire un tri en VBA.
      0
  3. romanza Messages postés 263 Statut Membre 2
     
    Bonjour,

    Après essai, ce n'est pas satisfaisant. Malgré une une macro fait par l'enregistreur, un message apparait : "Voulez-vous remplacer le contenu des cellules existantes". Si on clique sur OK, c'est bon.
    Si on clique dur Annuler ça bug.

    Je préfèrerais une macro à la source sur la combobox, plus fluide pour l'utilisateur.
    0
    1. yg_be Messages postés 23437 Date d'inscription   Statut Contributeur Dernière intervention   1 588
       
      peux-tu partager ton fichier, ou, au minimum, le code de la macro?
      la macro ne trie pas la plage source de la combobox?
      0
      1. yg_be Messages postés 23437 Date d'inscription   Statut Contributeur Dernière intervention   1 588 > yg_be Messages postés 23437 Date d'inscription   Statut Contributeur Dernière intervention  
         
        as-tu répondu à la seconde question?
        0
      2. romanza Messages postés 263 Statut Membre 2 > yg_be Messages postés 23437 Date d'inscription   Statut Contributeur Dernière intervention  
         
        Si mais elle déclenche la question gérée par Excel : "Voulez-vous remplacer les cellules existantes"
        Si on clique sur OK, c'est bon
        Si on clique sur Annuler, ça bug.
        Pas top pour l'utilisateur.
        0
  4. romanza Messages postés 263 Statut Membre 2
     
    Voilà :

    Sub Macro6()
    '
    ' Macro6 Macro
    '

    '
    Sheets("JoursFériés et mails").Select
    Range("I9:I22").Select
    Selection.TextToColumns Destination:=Range("K9"), DataType:=xlDelimited, _
    TextQualifier:=xlDoubleQuote, ConsecutiveDelimiter:=False, Tab:=True, _
    Semicolon:=False, Comma:=False, Space:=False, Other:=True, OtherChar _
    :=".", FieldInfo:=Array(Array(1, 1), Array(2, 1), Array(3, 1)), _
    TrailingMinusNumbers:=True
    Range("K8:L21").Select
    ActiveWorkbook.Worksheets("JoursFériés et mails").Sort.SortFields.Clear
    ActiveWorkbook.Worksheets("JoursFériés et mails").Sort.SortFields.Add Key:= _
    Range("L9:L21"), SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:= _
    xlSortNormal
    With ActiveWorkbook.Worksheets("JoursFériés et mails").Sort
    .SetRange Range("K8:L21")
    .Header = xlYes
    .MatchCase = False
    .Orientation = xlTopToBottom
    .SortMethod = xlPinYin
    .Apply
    End With
    Sheets("Mail actualisation").Select
    End Sub
    0
  5. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  6. romanza Messages postés 263 Statut Membre 2
     
    REctificatif :

    Sub Macro10()
    '
    ' Macro10 Macro
    '

    '
    Sheets("JoursFériés et mails").Select
    Range("I9:I22").Select
    Selection.TextToColumns Destination:=Range("K9"), DataType:=xlDelimited, _
    TextQualifier:=xlDoubleQuote, ConsecutiveDelimiter:=False, Tab:=False, _
    Semicolon:=False, Comma:=False, Space:=False, Other:=True, OtherChar _
    :=".", FieldInfo:=Array(Array(1, 2), Array(2, 1), Array(3, 1)), _
    TrailingMinusNumbers:=True
    Range("K8:M22").Select
    ActiveWorkbook.Worksheets("JoursFériés et mails").Sort.SortFields.Clear
    ActiveWorkbook.Worksheets("JoursFériés et mails").Sort.SortFields.Add Key:= _
    Range("L9:L22"), SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:= _
    xlSortNormal
    With ActiveWorkbook.Worksheets("JoursFériés et mails").Sort
    .SetRange Range("K8:M22")
    .Header = xlYes
    .MatchCase = False
    .Orientation = xlTopToBottom
    .SortMethod = xlPinYin
    .Apply
    End With
    Range("L24").Select
    Sheets("Mail actualisation").Select
    End Sub
    0
    1. yg_be Messages postés 23437 Date d'inscription   Statut Contributeur Dernière intervention   1 588
       
      0
      1. romanza Messages postés 263 Statut Membre 2 > yg_be Messages postés 23437 Date d'inscription   Statut Contributeur Dernière intervention  
         
        Sub Macro10()
        '
        ' Macro10 Macro
        '
        
        '
        Sheets("JoursFériés et mails").Select
        Range("I9:I22").Select
        Selection.TextToColumns Destination:=Range("K9"), DataType:=xlDelimited, _
        TextQualifier:=xlDoubleQuote, ConsecutiveDelimiter:=False, Tab:=False, _
        Semicolon:=False, Comma:=False, Space:=False, Other:=True, OtherChar _
        :=".", FieldInfo:=Array(Array(1, 2), Array(2, 1), Array(3, 1)), _
        TrailingMinusNumbers:=True
        Range("K8:M22").Select
        ActiveWorkbook.Worksheets("JoursFériés et mails").Sort.SortFields.Clear
        ActiveWorkbook.Worksheets("JoursFériés et mails").Sort.SortFields.Add Key:= _
        Range("L9:L22"), SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:= _
        xlSortNormal
        With ActiveWorkbook.Worksheets("JoursFériés et mails").Sort
        .SetRange Range("K8:M22")
        .Header = xlYes
        .MatchCase = False
        .Orientation = xlTopToBottom
        .SortMethod = xlPinYin
        .Apply
        End With
        Range("L24").Select
        Sheets("Mail actualisation").Select
        End Sub
         
        0
      2. yg_be Messages postés 23437 Date d'inscription   Statut Contributeur Dernière intervention   1 588 > romanza Messages postés 263 Statut Membre
         
        pour du VBA, il faut préciser "basic" comme langage.
        0
      3. yg_be Messages postés 23437 Date d'inscription   Statut Contributeur Dernière intervention   1 588 > romanza Messages postés 263 Statut Membre
         
        si je devine bien ce que fait ton code, tu as choisi d'utiliser "text to columns" plutôt qu'une formule afin d'isoler le nom.

        as-tu investigué et déterminé quelle est la ligne de code qui déclenche la question "gérée" par Excel?

        je pense qu'il suffit de vider la plage de destination avant de faire TextToColumns:
        Sheets("JoursFériés et mails").Range("K8:M22").Clear
        0
  7. romanza Messages postés 263 Statut Membre 2
     
    Bonjour,

    Je te joins mon fichier, ce sera plus simple :

    https://mon-partage.fr/f/Hxgsiuts/

    Merci à toi
    0
    1. yg_be Messages postés 23437 Date d'inscription   Statut Contributeur Dernière intervention   1 588
       
      as-tu testé ma suggestion avant d'envoyer le fichier?
      est-elle incluse dans le fichier envoyé?
      0
  8. romanza Messages postés 263 Statut Membre 2
     
    Ok j'ai intégré le code supplémentaire à l'endroit précisé et cela fonctionne (pour info, je ne maîtrise pas du tout les macros). Merci.

    Y-a t'il un moyen, quand on défiltre dans l'onglet "rétroplanning", de ne plus avoir l message :

    "Voulez-vous remplacer le contenu des cellules de destination dans Mail actualisation?"
    et donc d'être obligé de faire "OK" à chaque fois?
    0
    1. yg_be Messages postés 23437 Date d'inscription   Statut Contributeur Dernière intervention   1 588
       
      ta nouvelle question a-t-elle un rapport avec la macro?
      0
      1. romanza Messages postés 263 Statut Membre 2 > yg_be Messages postés 23437 Date d'inscription   Statut Contributeur Dernière intervention  
         
        Non, sur le premier sujet c'est réglé....
        0
      2. yg_be Messages postés 23437 Date d'inscription   Statut Contributeur Dernière intervention   1 588 > romanza Messages postés 263 Statut Membre
         
        j'ai commencé à regarder pour ta nouvelle question.
        j'ai arrêté, le fichier est trop désordonné, avec du code dans tous les sens.
        0
  9. romanza Messages postés 263 Statut Membre 2
     
    Bonjour,

    Hormis la complexité du fichier, on pourrait prendre la question à part, non?

    Quand on filtre un TCD, peut-on empêcher, par macro, le message : "Voulez-vous remplacer le contenu des cellules existantes"?
    0
    1. yg_be Messages postés 23437 Date d'inscription   Statut Contributeur Dernière intervention   1 588
       
      Me message est produit parce que l'extension du TCD va effacer des données hors du TCD existant.
      Je pense que le plus simple est d'effacer ces données avant d'étendre le TCD.
      0
  10. romanza Messages postés 263 Statut Membre 2
     
    Non parce qu'il y a juste la macro qui permet de ne pas écraser ces données même si on clique OK (onglet Mail actualisation")
    0
    1. yg_be Messages postés 23437 Date d'inscription   Statut Contributeur Dernière intervention   1 588
       
      Tu réponds non, alors que je n'ai pas posé de question.
      0
  11. romanza Messages postés 263 Statut Membre 2
     
    Bonjour.

    Je réponds non au fait qu'il faille effacer les données avant d'étendre le TCD.
    0
    1. yg_be Messages postés 23437 Date d'inscription   Statut Contributeur Dernière intervention   1 588
       
      Ces données sont effacées quand on répond "ok".
      0
  12. romanza Messages postés 263 Statut Membre 2
     
    Non, voir l'onglet "Mail actualisation"

    La macro suivante empêche cela :

    'Adapte le texte sous le TCD à la hauteur du TCD
    Private Sub Worksheet_PivotTableUpdate(ByVal Target As PivotTable)
    '
    Dim d&, t&
    Const p$ = "Bien cordialement"
    Const f$ = "=CONCATENATE(""Date de retour souhaitée le "")&TEXT(WORKDAY(Rétroplanning!C8,J2,'JoursFériés et mails'!B9:B17),""jj mmmm aaaa"")"
    
        t = Target.TableRange2.Row + Target.TableRange2.Rows.Count - 1
        d = Cells(Rows.Count, "B").End(xlUp).Row
        Do While d > t
            Cells(d, "B").Clear
            d = Cells(Rows.Count, "B").End(xlUp).Row
        Loop
        With Cells(t + 2, "B")
            .Formula = f
            .Font.Bold = True
            .Font.Underline = True
        End With
        Cells(t + 4, "B").Value = p
        With Shapes("Signature")
          .Top = Cells(t + 7, "B").Top
          .Left = Cells(t + 7, "B").Left
        End With
    
    End Sub
    
    
    0
    1. yg_be Messages postés 23437 Date d'inscription   Statut Contributeur Dernière intervention   1 588
       
      comme tu le vois, cette macro fait deux choses, après la mise à jour du TCD:
      - elle efface d'abord toutes les données en dessous du nouveau TCD
      - elle ajoute ensuite de nouvelles données en dessous du nouveau TCD

      ce que tu dois ajouter, c'est du code qui est exécuté avant de mettre le TCD à jour, pour effacer les données qui vont disparaitre à cause de l'extension du TCD (ou effacer toutes les données en dessous de l'ancien TCD).
      0
      1. romanza Messages postés 263 Statut Membre 2 > yg_be Messages postés 23437 Date d'inscription   Statut Contributeur Dernière intervention  
         
        Oui mais là je ne sais pas faire.

        les macros que tu as pu voir dans mon fichier ne sont pas de ma science mais de helpers sur ce forum....
        0
      2. yg_be Messages postés 23437 Date d'inscription   Statut Contributeur Dernière intervention   1 588 > romanza Messages postés 263 Statut Membre
         
        le fichier est trop désordonné, avec du code dans tous les sens, sans logique globale.
        très probablement avec beaucoup de code inutile.

        comment se fait-il que ce TCD se mette à jour, qu'est-ce qui déclenche cette mise à jour?
        quand tu auras déterminé quelle ligne de code déclenche cela, il sera probablement simple d'adapter le code pour éviter de recevoir la question.

        ceci t'aidera peut-être:
        https://www.commentcamarche.net/contents/1381-debogage
        0
  13. romanza Messages postés 263 Statut Membre 2
     
    Bon OK.

    Je n'ai malheureusement pas le temps d'attaquer une formation en macro.

    Je vais repositionner la question sur le forum.

    Merci pour le temps passé.

    Bonne journée
    0
    1. yg_be Messages postés 23437 Date d'inscription   Statut Contributeur Dernière intervention   1 588
       
      peux-tu alors marquer la discussion comme résolue?
      0
  14. romanza Messages postés 263 Statut Membre 2
     
    Oui même si Ce n'est pas le terme exact
    0
    1. yg_be Messages postés 23437 Date d'inscription   Statut Contributeur Dernière intervention   1 588
       
      tu as pourtant obtenu une excellente solution à ta question de départ, me semble-t-il.
      0
  15. romanza Messages postés 263 Statut Membre 2
     
    Oui tu as raison puisque j'ai formulé ensuite une seconde question qui n'était pas dans le sujet
    0