XL 2010 Macro VBA Excel (Doublon,SansAccents,Maj,Min,Nompropre,Espaces superflus)

Virginie17d

XLDnaute Occasionnel
1588208871672.png
 

Pièces jointes

  • MACROS VBA PERSONNEL.xlsm
    60.1 KB · Affichages: 264

Virginie17d

XLDnaute Occasionnel
Oui Patrick assure un max pour penser au Trim, et Eriiiic se fera sûrement un plaisir de te faire le "patch" de sa function pour gérer le +31 (0) 6X XXX XX XX ;)
:D :D :D
J'ai ajouté tous les pays limitrophes aussi dans les constantes en top de module télephone, à toi de maintenir à jour des deux coté, indicatif et taille synchro dans l'ordre.
C'est parfait ! merci
 

patricktoulon

XLDnaute Barbatruc
non virginie

Ltrim =trim espace à gauche
Rtrim= trim espace à droite
trim = trim espace a gauche et droite
application.trim= trim espace a gauche et droite +suppression des doubles espaces dans la chaîne
raz space=supprime tout les espace
la seule différence avec avant c'est bien entendu les options mais aussi le fait que tu dois sélectionner tes cellules ou colonnes et c'est mieux ça t’évite d'aller taper dans la colonne mail ou autre
 

patricktoulon

XLDnaute Barbatruc
re
voila pour caracteres
VB:
Option Explicit

'Remplacé par PatrickToulon

Private Const accent As String = "ÀÁÂÃÄÅàáâãäåÒÓÔÕÖØòóôõöøÈÉÊËèéêëÌÍÎÏìíîïÙÚÛÜùúûüÿ ÑñÇç'-"
Private Const noAccent As String = "AAAAAAaaaaaaOOOOOOooooooEEEEeeeeIIIIiiiiUUUUuuuuy NnCc  "


Sub Accents_Killer()
    Dim Cell As Range
    Dim Response As Long, rng As Range, Lastrow
    Lastrow = ActiveSheet.UsedRange.Rows.Count
    Set rng = Selection
    If rng.Columns.Count > 1 Then MsgBox "Ne pas seléctionner 2 colonnes à la fois", vbExclamation, "Une Colonne à la fois !": Exit Sub
    If rng.Rows.Count >= Rows.Count Then Set rng = rng.Cells(2, 1).Resize(Lastrow)
    '>>>Ajout Thierry 20200501
    If rng.Rows.Count > 1000 Then
        Response = MsgBox("Ca va prendre du temps sur : " & Format(Selection.Rows.Count, "#0,000,000") & " Cellules" & vbCrLf & "Voulez-vous continuer ?", vbOKCancel)
        If Response = vbCancel Then Exit Sub
    ElseIf rng.Rows.Count <= 1 Then
        MsgBox "Vous devez sélectionner une plage pour appliquer cette macro", vbInformation
        Exit Sub
    End If
    '<<<
    For Each Cell In rng.Cells
        Cell.Value = SansAccents(Cell.Text)
    Next Cell

End Sub



' La fonction :
Public Function SansAccents(ByRef S As String) As String
    Dim i As Integer
    Dim lettre As String * 1
    SansAccents = S
    For i = 1 To Len(accent)
        lettre = Mid$(accent, i, 1)
        If InStr(SansAccents, lettre) > 0 Then
            SansAccents = Replace(SansAccents, lettre, Mid$(noAccent, i, 1))
        End If
    Next i
End Function
tu peux sélectionner une colonne entière ça s'ajuste automatiquement au rows.cout end(xlup)
 

Virginie17d

XLDnaute Occasionnel
re
voila pour caracteres
VB:
Option Explicit

'Remplacé par PatrickToulon

Private Const accent As String = "ÀÁÂÃÄÅàáâãäåÒÓÔÕÖØòóôõöøÈÉÊËèéêëÌÍÎÏìíîïÙÚÛÜùúûüÿ ÑñÇç'-"
Private Const noAccent As String = "AAAAAAaaaaaaOOOOOOooooooEEEEeeeeIIIIiiiiUUUUuuuuy NnCc  "


Sub Accents_Killer()
    Dim Cell As Range
    Dim Response As Long, rng As Range, Lastrow
    Lastrow = ActiveSheet.UsedRange.Rows.Count
    Set rng = Selection
    If rng.Columns.Count > 1 Then MsgBox "Ne pas seléctionner 2 colonnes à la fois", vbExclamation, "Une Colonne à la fois !": Exit Sub
    If rng.Rows.Count >= Rows.Count Then Set rng = rng.Cells(2, 1).Resize(Lastrow)
    '>>>Ajout Thierry 20200501
    If rng.Rows.Count > 1000 Then
        Response = MsgBox("Ca va prendre du temps sur : " & Format(Selection.Rows.Count, "#0,000,000") & " Cellules" & vbCrLf & "Voulez-vous continuer ?", vbOKCancel)
        If Response = vbCancel Then Exit Sub
    ElseIf rng.Rows.Count <= 1 Then
        MsgBox "Vous devez sélectionner une plage pour appliquer cette macro", vbInformation
        Exit Sub
    End If
    '<<<
    For Each Cell In rng.Cells
        Cell.Value = SansAccents(Cell.Text)
    Next Cell

End Sub



' La fonction :
Public Function SansAccents(ByRef S As String) As String
    Dim i As Integer
    Dim lettre As String * 1
    SansAccents = S
    For i = 1 To Len(accent)
        lettre = Mid$(accent, i, 1)
        If InStr(SansAccents, lettre) > 0 Then
            SansAccents = Replace(SansAccents, lettre, Mid$(noAccent, i, 1))
        End If
    Next i
End Function
tu peux sélectionner une colonne entière ça s'ajuste automatiquement au rows.cout end(xlup)
Il continue à me répondre

1588847762200.png
 

patricktoulon

XLDnaute Barbatruc
je sais pas ce qu'en pense Thierry mais comme c'est destiné a devenir un xla(m)
je te proposerais bien un bouton en plus
qui servirait uniquement a ajuster le rows.count de la sélection au end(xlup) de la colonne sélectionnée ou usedrange.rows.count
il servirait uniquement a cela
 

patricktoulon

XLDnaute Barbatruc
c'est le lastrow c'est quasi pareil
de toute façon tu dois avoir la next cellule pleine c'est obligé
c'est un peu le soucis dans tes fichiers j'ai trouver des cellules orphelines

regarde dans le mien ça s’arrête a 20 lignes et en sélectionnant la colonne complète regarde dans la statusbars
 

Pièces jointes

  • XLD_Virginie17d consolidé et testé 05052020 V1 (1).xlsm
    61.3 KB · Affichages: 7

Discussions similaires

Statistiques des forums

Discussions
312 222
Messages
2 086 395
Membres
103 200
dernier inscrit
pascalgip