IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Macros et VBA Excel Discussion :

reconnaissance de saisie de donnée (mail personnel ou professionnel)


Sujet :

Macros et VBA Excel

  1. #1
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Mars 2012
    Messages
    36
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Mars 2012
    Messages : 36
    Points : 11
    Points
    11
    Par défaut reconnaissance de saisie de donnée (mail personnel ou professionnel)
    Bonsoir ! comment allez vous, voilà j'ai un nouveau sujet.
    il sagit ici de différencier entre un mail Personnel et un mail Professionnel.
    généralement connu :
    - le mail personnel notamment ( Yahoo, Gmail, Hotmail, Live, Voila,...)
    - le mail Professionnel souvent reconnu par un nom d'entreprise,Société
    ou un organisme ( exemple: rene@lg.fr , christian@toyota.com ,..)

    dans mon userform j'ai une zone de texe 1 (pour la saisi d'un mail Personnel) pour l'enregistrer sur ma feuille je clique sur le bouton (enregistrer mail perso qui se trouve aussi sur mon userform)
    et une zone de texe 2 (pour la saisi d'un mail Professionnel) pour l'enregistrer sur ma feuille je clique sur le bouton (enregistrer mail pro qui aussi se trouve sur mon userform).

    le Problème ici je veux que quand j'insert un mail personnel dans la partie de la zone de texe professionnel qu'il reconnaisse le mail personnel en me disant ceci n'est pas un mail professionnel.

    même chose pour le cas d'un mail personnel, il ne peut que accepter les mails personnel, pas les mails professionnel.

    voici mon code qui me permet d'ajouter des mails (pour le bouton)

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    Private Sub Ajout1_Click()
    'teste si un texte a été entré, si non, le programme averti l'utilisateur et s'arrête
                   If UserForm1.TextBox1.Text = "" Then
                            MsgBox "Vous n'avez rien saisi;" & Chr(10) & "Veillez entrer un mail! "
                        Exit Sub
                       End If
    For i = 1 To 10000
    If Cells(i, 1) = "" Then Exit For
    Next
     
    'insertion de la valeur de la zone de texte (textbox1 représentant le nom de la zone de texte)
    Cells(i, 1) = TextBox1.Text
    End Sub
    et celui ci le code de ma zone de texe

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    Private Sub TextBox1_Change()
    Sheets("Mail Personnel").Select
    Range("A2").Select
    ActiveCell.FormulaR1C1 = TextBox1
    End Sub

  2. #2
    Membre émérite
    Homme Profil pro
    Inscrit en
    Décembre 2011
    Messages
    1 186
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Décembre 2011
    Messages : 1 186
    Points : 2 502
    Points
    2 502
    Par défaut
    Bonjour,

    un mail Personnel [...] généralement connu :
    - le mail personnel notamment ( Yahoo, Gmail, Hotmail, Live, Voila,...)
    [...]
    le Problème ici je veux que quand j'insert un mail personnel dans la partie de la zone de texte professionnel qu'il reconnaisse le mail personnel en me disant ceci n'est pas un mail professionnel.
    Pour savoir si un destinataire de mail utilise un email faisant partie de la liste des fournisseur d'email considéré comme perso,
    utilise la fonction isMailPerso(<adresse email du destinataire). Par conséquence, les mails qui ne seront pas personnel, seront considérés comme professionnel.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    Function isMailPerso(destinataire As String) As Boolean
        Dim ISPPerso() As String
        ISPPerso = Split("yahoo;gmail;hotmail;live;voila;laposte;aol;bouygtel;crocomail", ";")
     
        isMailPerso = False
        Dim i As Integer
        For i = 0 To UBound(ISPPerso)
            If InStr(1, LCase(destinataire), "@" & ISPPerso(i)) > 0 Then
                isMailPerso = True
                Exit For
            End If
        Next i
     
    End Function

  3. #3
    Invité
    Invité(e)
    Par défaut
    Bonjour

    Attention de bien mettre à jour la liste, il manque par exemple la Dartybox.

    Philippe

  4. #4
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Mars 2012
    Messages
    36
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Mars 2012
    Messages : 36
    Points : 11
    Points
    11
    Par défaut
    Bonjour ! merci , j'ai un peu du mal à m'en sortir ce code je doit l'associer l'un de mon code ou bien. si vous pouvez m'en dire plus je m’en sortirais aussi vite.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    Function isMailPerso(destinataire As String) As Boolean
        Dim ISPPerso() As String
        ISPPerso = Split("yahoo;gmail;hotmail;live;voila;laposte;aol;bouygtel;crocomail", ";")
     
        isMailPerso = False
        Dim i As Integer
        For i = 0 To UBound(ISPPerso)
            If InStr(1, LCase(destinataire), "@" & ISPPerso(i)) > 0 Then
                isMailPerso = True
                Exit For
            End If
        Next i
     
    End Function

  5. #5
    Membre émérite
    Homme Profil pro
    Inscrit en
    Décembre 2011
    Messages
    1 186
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Décembre 2011
    Messages : 1 186
    Points : 2 502
    Points
    2 502
    Par défaut
    Re.

    Avec la ligne ISPPerso = Split("yahoo;gmail;hotmail;live;voila;laposte;aol;bouygtel;crocomail", ";") ISPPerso contient un tableau de chaîne contenant
    la liste de domaine considéré comme personnel.

    Pour compléter la liste comme indiqué par Philippe JOCHMANS, il suffit d'ajouter d'autre domaine à la fin de la chaîne de caractère, en les séparant par des ;

    Donc dans la fonction qui ajoute un code mail Professionnel, il faudra ajouter quelque par :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
         If isMailPerso(UserForm1.TextBox1.Text) Then
           Call MsgBox("Ceci est un destinataire non professionnel" & Chr(10) & _
                       "Le traitement est interrompu", vbExclamation + vbOKOnly)
           Exit Sub
        End If

  6. #6
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Mars 2012
    Messages
    36
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Mars 2012
    Messages : 36
    Points : 11
    Points
    11
    Par défaut
    Salut ! je m'en sort pas, ça vous dérangerais si je vous passais mon fichier excel vba, afin que vous y jeter un oeil et si vous pouvez ajouter ces codes. ça m'aiderait beaucoup merci.
    Fichiers attachés Fichiers attachés

  7. #7
    Membre émérite
    Homme Profil pro
    Inscrit en
    Décembre 2011
    Messages
    1 186
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Décembre 2011
    Messages : 1 186
    Points : 2 502
    Points
    2 502
    Par défaut
    Re.

    Je ne peux pas modifier le fichier directement (j'utilise XLS2003).

    Mais les opérations se limite à de simples copier/coller.

    (1) Le clic sur ajout Perso
    Sous la routine qui gère le clic sur un ajouter de mail perso Private Sub Ajout1_Click() ajoute :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
        If Not (isMailPerso(UserForm1.TextBox1.Text)) Then
           Call MsgBox("Ceci est un destinataire Professionnel" & Chr(10) & _
                       "Le traitement est interrompu", vbExclamation + vbOKOnly)
           Exit Sub
        End If

    (2) Le clic sur ajout Pro
    Sous la routine qui gère le clic sur un ajouter de mail pro Private Sub Ajout2_Click() ajoute :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
        If (isMailPerso(UserForm1.TextBox2.Text)) Then
           Call MsgBox("Ceci est un destinataire NON professionnel" & Chr(10) & _
                       "Le traitement est interrompu", vbExclamation + vbOKOnly)
           Exit Sub
        End If
    (3) La fonction de test d'email
    En fin du code de la UserForm UserForm1 ajoute :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    Function isMailPerso(destinataire As String) As Boolean
        Dim ISPPerso() As String
        ISPPerso = Split("yahoo;gmail;hotmail;live;voila;laposte;aol;bouygtel;crocomail", ";")
     
        isMailPerso = False
        Dim i As Integer
        For i = 0 To UBound(ISPPerso)
            If InStr(1, LCase(destinataire), "@" & ISPPerso(i)) > 0 Then
                isMailPerso = True
                Exit For
            End If
        Next i
     
    End Function
    (4) Liste à compléter
    Enfin pense à compléter la liste des domaines perso de tes contact, sinon tu auras des avertissement sans raison lors d'ajout d'utilisateur.


    (5) Suggestion

    Eventuellement on pourrait transformer le message
    Ceci est un destinataire professionnel, traitement interrompu avec un simple bouton <Ok> en,
    Ceci est un destinataire professionnel, souhaitez vous tous de même l'ajouter à vos contacts?<Oui> + <Non>.
    Dans l'idéal la liste des domaines perso pourrait même se mettre à jour avec les actions de l'utilisateur (en stockant la liste des domaines validés par l'utilisateur dans une cellule du classeur).

  8. #8
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Mars 2012
    Messages
    36
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Mars 2012
    Messages : 36
    Points : 11
    Points
    11
    Par défaut
    Merci ! vous avez résolu mon problème, c'est vraiment gentils....

  9. #9
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Mars 2012
    Messages
    36
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Mars 2012
    Messages : 36
    Points : 11
    Points
    11
    Par défaut
    Bonsoir !
    dans la parti des adresses mails personnelles on a fait de sorte que seule les adresses mails personnelles puissent être réconnu grace au code suivant:


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    If Not (isMailPerso(UserForm1.TextBox1.Text)) Then
           Call MsgBox("Ceci est un destinataire Professionnel" & Chr(10) & _
                       "Le traitement est interrompu", vbExclamation + vbOKOnly)
           Exit Sub
        End If
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     Function isMailPerso(destinataire As String) As Boolean
        Dim ISPPerso() As String
        ISPPerso = Split("yahoo;gmail;hotmail;live;voila;laposte;aol;bouygtel;crocomail", ";")
     
        isMailPerso = False
        Dim i As Integer
        For i = 0 To UBound(ISPPerso)
            If InStr(1, LCase(destinataire), "@" & ISPPerso(i)) > 0 Then
                isMailPerso = True
                Exit For
            End If
        Next i
     
    End Function
    Comment faire en modifiant ce code que les adresses mails personnelles ne soient pas réconnu dans la rubrique des adresses mails professionnelles ?

    Que ces adresses mails personnelles soit comme une liste noire dans la rubrique des mails professionnelles.

  10. #10
    Membre émérite
    Homme Profil pro
    Inscrit en
    Décembre 2011
    Messages
    1 186
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Décembre 2011
    Messages : 1 186
    Points : 2 502
    Points
    2 502
    Par défaut
    Bonsoir,

    Comment faire en modifiant ce code que les adresses mails personnelles ne soient pas reconnues dans la rubrique des adresses mails professionnelles ?
    Si on part du principe que tous les domaines d'email personnel sont NON professionnel, la solution est donnée au point (2) du post #7.

    isMailPerso() = True => destinataire Email personnel
    isMailPerso() = False => destinataire Email professionnel

    Si la solution ne convient pas, merci de préciser ce qui ne convient pas.

  11. #11
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Mars 2012
    Messages
    36
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Mars 2012
    Messages : 36
    Points : 11
    Points
    11
    Par défaut
    Bonsoir ! la solution au point 2 du post 7 ne marche pas. il ne réagit pas quand j'ajoute une adresse personnel dans la partie reservé pour les adresses professionnelles. alors que dans le cas dans la partie personnelles quand j'insert une adresse professionnelle il reagit sans problème.

  12. #12
    Membre émérite
    Homme Profil pro
    Inscrit en
    Décembre 2011
    Messages
    1 186
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Décembre 2011
    Messages : 1 186
    Points : 2 502
    Points
    2 502
    Par défaut
    C'est une erreur de ma part.
    Le composant pour la saisie du mail professionnel est UserForm1.TextBox2.Text, et non pas UserForm1.TextBox1.Text.
    Si tu change le nom du composant dans le traitement (2), ça devrait fonctionner.
    (message post #7 est mis à jour avec le code complet).

  13. #13
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Mars 2012
    Messages
    36
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Mars 2012
    Messages : 36
    Points : 11
    Points
    11
    Par défaut
    cette fois ci le problème est vraiment résolu merci cordialement

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [Formulaire] Formulaire de saisie de données
    Par Elfito dans le forum IHM
    Réponses: 5
    Dernier message: 08/01/2007, 13h39
  2. Saisie de données en mode graphique??
    Par matix83 dans le forum C
    Réponses: 5
    Dernier message: 15/04/2006, 11h09
  3. saisie de données et génération automatique d'un classement
    Par kcizth dans le forum Général JavaScript
    Réponses: 5
    Dernier message: 23/12/2005, 14h24
  4. saisie de données dans formulaire
    Par philpaul dans le forum Access
    Réponses: 4
    Dernier message: 15/09/2005, 14h13
  5. Saisie de données dans une procédure stockée
    Par Hastaroth dans le forum MS SQL Server
    Réponses: 4
    Dernier message: 25/10/2004, 10h54

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo