Tri adresses mail combobox [Résolu]

Signaler
Messages postés
248
Date d'inscription
samedi 27 janvier 2007
Statut
Membre
Dernière intervention
18 mars 2021
-
Messages postés
248
Date d'inscription
samedi 27 janvier 2007
Statut
Membre
Dernière intervention
18 mars 2021
-
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

Messages postés
16017
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
14 juin 2021
867
bonjour,
cette combobox est-elle construite sur le contenu de cellules?
si oui, il suffit de trier les cellules.
Messages postés
248
Date d'inscription
samedi 27 janvier 2007
Statut
Membre
Dernière intervention
18 mars 2021
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.
Messages postés
16017
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
14 juin 2021
867
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.
Messages postés
248
Date d'inscription
samedi 27 janvier 2007
Statut
Membre
Dernière intervention
18 mars 2021
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.
Messages postés
16017
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
14 juin 2021
867
peux-tu partager ton fichier, ou, au minimum, le code de la macro?
la macro ne trie pas la plage source de la combobox?
Messages postés
16017
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
14 juin 2021
867 >
Messages postés
16017
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
14 juin 2021

as-tu répondu à la seconde question?
Messages postés
248
Date d'inscription
samedi 27 janvier 2007
Statut
Membre
Dernière intervention
18 mars 2021
2 >
Messages postés
16017
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
14 juin 2021

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.
Messages postés
248
Date d'inscription
samedi 27 janvier 2007
Statut
Membre
Dernière intervention
18 mars 2021
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
Messages postés
248
Date d'inscription
samedi 27 janvier 2007
Statut
Membre
Dernière intervention
18 mars 2021
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
Messages postés
16017
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
14 juin 2021
867
Messages postés
248
Date d'inscription
samedi 27 janvier 2007
Statut
Membre
Dernière intervention
18 mars 2021
2 >
Messages postés
16017
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
14 juin 2021

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
 
Messages postés
16017
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
14 juin 2021
867 >
Messages postés
248
Date d'inscription
samedi 27 janvier 2007
Statut
Membre
Dernière intervention
18 mars 2021

pour du VBA, il faut préciser "basic" comme langage.
Messages postés
16017
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
14 juin 2021
867 >
Messages postés
248
Date d'inscription
samedi 27 janvier 2007
Statut
Membre
Dernière intervention
18 mars 2021

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
Messages postés
248
Date d'inscription
samedi 27 janvier 2007
Statut
Membre
Dernière intervention
18 mars 2021
2
Bonjour,

Je te joins mon fichier, ce sera plus simple :

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

Merci à toi
Messages postés
16017
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
14 juin 2021
867
as-tu testé ma suggestion avant d'envoyer le fichier?
est-elle incluse dans le fichier envoyé?
Messages postés
248
Date d'inscription
samedi 27 janvier 2007
Statut
Membre
Dernière intervention
18 mars 2021
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?
Messages postés
16017
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
14 juin 2021
867
ta nouvelle question a-t-elle un rapport avec la macro?
Messages postés
248
Date d'inscription
samedi 27 janvier 2007
Statut
Membre
Dernière intervention
18 mars 2021
2 >
Messages postés
16017
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
14 juin 2021

Non, sur le premier sujet c'est réglé....
Messages postés
16017
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
14 juin 2021
867 >
Messages postés
248
Date d'inscription
samedi 27 janvier 2007
Statut
Membre
Dernière intervention
18 mars 2021

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.
Messages postés
248
Date d'inscription
samedi 27 janvier 2007
Statut
Membre
Dernière intervention
18 mars 2021
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"?
Messages postés
16017
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
14 juin 2021
867
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.
Messages postés
248
Date d'inscription
samedi 27 janvier 2007
Statut
Membre
Dernière intervention
18 mars 2021
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")
Messages postés
16017
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
14 juin 2021
867
Tu réponds non, alors que je n'ai pas posé de question.
Messages postés
248
Date d'inscription
samedi 27 janvier 2007
Statut
Membre
Dernière intervention
18 mars 2021
2
Bonjour.

Je réponds non au fait qu'il faille effacer les données avant d'étendre le TCD.
Messages postés
16017
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
14 juin 2021
867
Ces données sont effacées quand on répond "ok".
Messages postés
248
Date d'inscription
samedi 27 janvier 2007
Statut
Membre
Dernière intervention
18 mars 2021
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

Messages postés
16017
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
14 juin 2021
867
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).
Messages postés
248
Date d'inscription
samedi 27 janvier 2007
Statut
Membre
Dernière intervention
18 mars 2021
2 >
Messages postés
16017
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
14 juin 2021

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....
Messages postés
16017
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
14 juin 2021
867 >
Messages postés
248
Date d'inscription
samedi 27 janvier 2007
Statut
Membre
Dernière intervention
18 mars 2021

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
Messages postés
248
Date d'inscription
samedi 27 janvier 2007
Statut
Membre
Dernière intervention
18 mars 2021
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
Messages postés
16017
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
14 juin 2021
867
peux-tu alors marquer la discussion comme résolue?
Messages postés
248
Date d'inscription
samedi 27 janvier 2007
Statut
Membre
Dernière intervention
18 mars 2021
2
Oui même si Ce n'est pas le terme exact
Messages postés
16017
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
14 juin 2021
867
tu as pourtant obtenu une excellente solution à ta question de départ, me semble-t-il.
Messages postés
248
Date d'inscription
samedi 27 janvier 2007
Statut
Membre
Dernière intervention
18 mars 2021
2
Oui tu as raison puisque j'ai formulé ensuite une seconde question qui n'était pas dans le sujet