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

patricktoulon

XLDnaute Barbatruc
cellules ophelines = cellules n'importe ou après la dernière ligne de ton tableau
qui contiennent au moins un espace donc 1 caractère donc pas vide
Cellule Opheline,what is it ?
J'ai copier les valeurs dans un fichier client pour les mettre dans le XLD, mais effectivement si j'ajoute des lignes au XLD ca fonctionne correctement.
ça confirme ce que je dit
a bidouiller tu en a oublié un nettoyage de fichier et si c'est pas toi qui l'a fait et ben on est dans la mouise alors il te faudra contrôler ça a chaque fichier que tu reçois
 

_Thierry

XLDnaute Barbatruc
Repose en paix
Oui c'était tout le pb, je souhaitais sécurisé mais je ne peux pas être derrière tout le monde


Coucou Vivi, voici un exemple comme j'avais évoqué pour que tu soies "virtuellement" derrière tout le monde...
C'est sans macro donc un classeur très light et portable à travers les règles de Proxy qui laissent passer les XLSX dans Exchange/Outlook.

Je te conseille de partir de ce genre de base dès le départ...

@+Thierry
 

Pièces jointes

  • XLD_Vigini17d_Form_Structured_Input.xlsx
    20.4 KB · Affichages: 15

Virginie17d

XLDnaute Occasionnel
Coucou Vivi, voici un exemple comme j'avais évoqué pour que tu soies "virtuellement" derrière tout le monde...
C'est sans macro donc un classeur très light et portable à travers les règles de Proxy qui laissent passer les XLSX dans Exchange/Outlook.

Je te conseille de partir de ce genre de base dès le départ...

@+Thierry
Ah super! Je cherchais justement comment m’y prendre, j’optimise mon temps pendant que le kiné me torture
Je vais approfondir tout ça, je me permettrais des questions si besoin
 

eriiic

XLDnaute Barbatruc
Bonjour à tous,

Ben ça roupille ici. Vous êtes tous partis à La Rochelle pour le punch ? :)
Une petite, mais nécessaire, modification de la fonction :
En plus de la suppression du (0), on peut indiquer une fourchette pour les longueurs de n° internationaux acceptés.
En exemple j'ai mis le Luxembourg avec "4-11" : acceptera de 4 à 11 chiffres après le code du pays.

Et un point que j'avais oublié de préciser : si un code pays est un sous-groupe d'un autre (par exemple 1=USA et Canada, 1473=Grenade), il faut mettre le plus long devant puisque dès qu'une détection est faite on quitte la boucle.
(bon, mieux vaut mettre 1 pour toute l'amérique du nord si on ne modifie pas la fonction pour lui faire donner le pays)

VB:
Function numTel(ByVal num As String, Optional valide As Boolean = False) As String
    ' valide = False : n° non reconnu inchangé
    ' valide = True : n° non reconnu mis à ""
    '
    Const prefixeInt = "00" ' ou "+", sert uniquement pour le format retourné
    ' Plans de num pays    Grèce,Mayotte,Andorre,Monaco,Luxembourg
    Const codeInt As String = "30,262,376,377,352"
    Const lNumInt As String = "10,6,6,8,4-11" ' nombre de chiffres plan de num du pays
    '
    Dim datas, lig As Long, b_fr As Boolean, b_int As Boolean
    Dim ci, planNum(), i As Long, tmp
   
    ' table plan num international
    ci = Split(codeInt, ",")
    tmp = Split(lNumInt, ",")
    ReDim planNum(0 To UBound(tmp), 1 To 2)
    For i = 0 To UBound(tmp)
        If InStr(tmp(i), "-") > 0 Then ' plage
            planNum(i, 1) = CLng(Split(tmp(i), "-")(0)): planNum(i, 2) = CLng(Split(tmp(i), "-")(1))
        Else
            planNum(i, 1) = CLng(tmp(i)): planNum(i, 2) = CLng(tmp(i))
        End If
    Next i
   
    num = Replace(Replace(Replace(Replace(num, " ", ""), ".", ""), "-", ""), ",", "")
    num = Replace(num, "(0)", "")
    If Left(num, 1) = "+" Then num = "00" & Mid(num, 2)
    If Left(num, 4) = "0033" Then
        num = Right(num, 9): b_fr = True
    ElseIf Left(num, 2) = "00" Then
        num = Mid(num, 3): b_int = True
    End If

    i = 1
    Do While Mid(num, i, 1) = "0": i = i + 1: Loop ' compter zéros du début
    ' normaliser n° national
    If Not b_int Then If Len(num) - i + 1 = 9 Or (Len(num) = 11 And Left(num, 2) = "33") Then num = Right(num, 9): b_fr = True
    If b_fr Then ' national
        Select Case Left(num, 1)
            Case "6", "7" ' mobiles
                num = prefixeInt & "33-" & num
            Case Else ' régionaux
                num = Format(Val(num), prefixeInt & """33-""#-########")
        End Select
    Else
        ' n° international reconnu ?
        For i = 0 To UBound(ci) ' recherche code pays
            If Left(num, Len(ci(i))) = ci(i) Then
                If Len(num) >= Len(ci(i)) + Val(planNum(i, 1)) And Len(num) <= Len(ci(i)) + Val(planNum(i, 2)) Then
                    num = prefixeInt & ci(i) & "-" & Mid(num, Len(ci(i)) + 1)
                ElseIf valide Then
                    num = vbNullString: Exit For
                End If
                Exit For
            End If
        Next i
        If i > UBound(ci) And valide Then num = vbNullString
    End If
    numTel = num
End Function
 

Virginie17d

XLDnaute Occasionnel
Bonjour Eric,

merci pour cette petite maj, effectivement le fil s’essouffle mais c’est de votre faute vous avez trop bien travaillé .
Le punch et les accras vous attendent.En attendant je bosse sur l’exemple de formulaire que m’a transmis Thierry, encore un truc que je découvre. Je me sens définitivement « con » :D :D :D
bonne journée à tous
 

Discussions similaires

Réponses
1
Affichages
432
Réponses
5
Affichages
272

Membres actuellement en ligne

Aucun membre en ligne actuellement.

Statistiques des forums

Discussions
315 097
Messages
2 116 186
Membres
112 679
dernier inscrit
Yupanki