Code VBA pour un check sur cellules

Bonjour à tous

Depuis deux jours maintenant j'essaye de trouver un moyen de vérifier des cellules avant l'envoie du formulaire. Mon ancien collègue avait créé un fichier excel (assez complexe) dans lequel j'ai essayé d'ajouter des formules mais sans succès (j'ai a chaque fois des messages d'erreurs)

Je suis loin d'être douée en excel raison pour laquelle je demande votre aide.

En attache je vous joins "le" fichier, sur lequel j'ai ajouté des commentaires (tab fichier fournisseur). Mon but serait au moment de l'envoie du formulaire (voir copie ecran ci-dessous), qu'un check soit fait sur le numéro de téléphone et fax et de prévenir l'utilisateur que le "leading zero", les espaces, points, virgule etc sont proscrits.

De même pour le numéro de compte banquaire et de TVA, pas d'espace de points ou caractères spéciaux..

Je vous remercie et n'hésitez pas a me contacter si vous aviez besoins de renseignements complémentaire, je serais ravie de vous les fournir. (en attache le fichier excel)

Guismo30

fournisseurs
10testpopup-2.xlsm (246.73 Ko)

[...] qu'un check soit fait sur le numéro de téléphone et fax et de prévenir l'utilisateur que le "leading zero", les espaces, points, virgule etc sont proscrits.

De même pour le numéro de compte banquaire et de TVA, pas d'espace de points ou caractères spéciaux.. [...]

Bonjour,

J'aurais bien besoin d'informations en plus, j'ai réussi à trouver à quel endroit le check se faisait pour les valeurs, après m'être perdu un moment dans un fichier que je découvrais, donc je vois où je devrai mettre les modifications mais j'aurai besoin d'éclaircissements par rapport à ce que tu as demandé...

Qu'entends-tu par leading zero? c'est la première fois que j'entends ce terme, tu dis également espaces, points virgule etc sont proscrits, pourrais-tu me dire plus en détail ce qu'il y a dans le etc? le numéro de téléphone, je me doute à peu près que tu n'accepteras que des chiffres, mais le Fax..., idem pour le compte banquaire et de TVA, qu'est ce que tu attends comme valeurs? Je pourrai ensuite vérifier que tes informations sont conformes

Bonjour Ausecour et merci de te pencher sur mon cas

En fait le problème que j'ai actuellement c est que chaque demandeur a une façon bien a lui/elle de compléter le fichier.. certains utilisent un "/" certain des points ou virgule, des espaces entre les chiffres etc...

De mon coté, quand le fichier est approuvé, je copie les infos du fichier excel et le colle dans un SAP mais a chaque fois, je dois effacer les points, les espaces, les virgules etc.. afin d'obtenir une data base propre et cohérente

Alors le leading zero si l'on "traduit" de l anglais c est un zéro qui se trouve devant.. donc sur un numéro de téléphone 0498080808 en Belgique je devrais avoir 498080808 (le premier zéro n'est pas nécessaire)

Pour ce qui est de la TVA et des comptes bancaires, je souhaites qu'il n'y ai aucune ponctuation (point, virgules etc..) et aucun espace, encore une fois pour les mêmes raisons.

Encore un tout grand merci !

Guismo30

Bonjour,

Je comprends mieux le problème, et je propose de les laisser entrer les informations comme ils le souhaitent

Oui alors tu vas te dire que ça sert bien de demander de l'aide pour avoir cette solution hein

En fait... Les problèmes que tu cites peuvent être réglés avec quelques fonctions qui font parties de la classe "Strings", et tout se passerait à l'export, je m'explique:

  • séparations différentes entre les nombres: en fait pour ça j'ai plusieurs solutions... tu peux utiliser la fonction Replace qui remplacerait les "/" par "" par exemple, afin de ne garder que les chiffres, seulement il faudra penser à toutes les séparations possibles... Une autre solution moins prise de tête serait de parcourir tout ton texte caractère par caractère avec la fonction mid(), et de ne garder que les valeurs qui sont 0,1,2,3,4,5,6,7,8,9, ça se fait plutôt facilement:
    Sub test()
    memoire = "04/05/06/07/08"
    numero = ""
    
    For i = 1 To Len(memoire)
        If Mid(memoire, i, 1) Like "#" Then
            numero = numero & Mid(memoire, i, 1)
        End If
    Next i
    
    If Len(CStr(CDbl(numero))) >= 9 Then
        MsgBox Right(numero, 9)
    End If
    End Sub

    En clair je parcours tout ton numéro de téléphone qui est stocké dans la variable "memoire", et je ne mets que les valeurs qui sont des chiffres dans la variable "numero", après je regarde juste que le numero ait au moins 9 caractères de long si je le convertis en nombre (ce qui a pour effet de transformer "0405060708" en 405060708.
  • TVA et comptes bancaires sans ponctuation particulière, ah moins peut-être pour les séparateurs décimaux? en vérifiant qu'il n'y en ait qu'un bien sûr, ça se bidouille aussi
    Sub test()
    valeur = "14.56.20"
    separateur = Application.DecimalSeparator
    valeur = Replace(valeur , ",", separateur)
    valeur = Replace(valeur , ".", separateur)
    
    If IsNumeric(valeur ) Then
        MsgBox valeur 
    End If
    End Sub

    Ton application Excel sait quel est le séparateur décimal de ton ordinateur, tu peux le savoir avec Application.DecimalSeparator, je m'occupe juste de changer les virgules et les points en séparateur décimal, et la fonction IsNumeric se charge de voir si c'est un nombre ou non, si tu as plus d'un seul séparateur décimal, ça n'affiche pas le message, mais si tu remplaces 14.56.20 par 14.56 ça affichera la valeur avec le bon séparateur décimal

En utilisant ces astuces, tu pourrais permettre plus de libertés au niveau de la saisie tout en protégeant ta base de données!

ouaw, et bien merci! ca c'est une explication claire merci beaucoup, je teste cela dans la journée et vous reviens.

c est agréable de voir l'entraide qu'il y a ici !

merci !

Guismo

Re,

De rien et bon courage pour les tests

Rechercher des sujets similaires à "code vba check"