{"text_format":"1","workbook":"xlsx","n_sheets":6,"sheets":["Datas","Membres","Extraction","Plan d'action","Notes personnelles","Sauvegarde Membres"],"not_rendered":{"charts":0,"images":1,"macros":1,"external_links":0,"defined_names":2,"comments":0,"pivot_tables":0},"unopened":[],"bounds":{"document_bytes":16777216,"sheet_cells":100000,"rows_first":2000,"rows_last":500,"rows_between":2000,"halvings":0,"cell_chars":16384,"cell_head_chars":4096},"cells_cut":0,"cells_raw":0,"read":"whole","date_system":"1900"}

{"sheet":"Datas","index":0,"n_rows":28,"n_cols":16,"rows_kept":28,"cut":false,"hidden":false,"merged":[]}
["CP-Villes","Villes"]
[13001,"MARSEILLE"]
[13002,"MARSEILLE"]
[13003,"MARSEILLE"]
[13004,"MARSEILLE"]
[13005,"MARSEILLE"]
[13006,"MARSEILLE"]
[13007,"MARSEILLE"]
[13008,"MARSEILLE"]
[13009,"MARSEILLE"]
[13010,"MARSEILLE"]
[13011,"MARSEILLE"]
[13012,"MARSEILLE"]
[13013,"MARSEILLE"]
[13014,"MARSEILLE"]
[13015,"MARSEILLE",null,null,null,null,null,null,null,null,null,null,null,null,null,false]
[13016,"MARSEILLE"]
[13260,"CASSIS"]
[13400,"AUBAGNE"]
[13600,"LA CIOTAT"]
[13600,"CEYRESTE"]
[13800,"LHGU"]
[13800,"GFSDQQG"]
[13800,"QREYE"]
[14999,"bbbbbb"]
[18212,"ARLUN"]
[13600,"LA CIOTAT"]
[13600,"LA CIOTAT"]

{"sheet":"Membres","index":1,"n_rows":24,"n_cols":28,"rows_kept":24,"cut":false,"hidden":false,"merged":[]}
["ID","Nom","Prénom","Tél. Fixe","Tél. Port","ADRESSE","VILLE","C.POST","E-mail","Date \nNaissance","Sexe","Licence","Carte","Tireur","Millieu","Pointeur"]
[1,"MARTINI","Antoinette","00 00 00 00 00",null,"79, Bd du Cabot","MARSEILLE",13008,null,"1962-02-13",null,"X","X","X","X","X"]
[2,"BERNARD","Lucas",null,null,"5, rue du felibrige",null,null,null,"13/04/1961",null,"X","X","X",null,"X"]
[3,"THOMASI","Sophie",null,null,"20, rue Nicole Zemmour, Le belvedère Bt C",null,null,null,"19/06/1947",null,"X","X",null,"X"]
[4,"PETITO","Enzo",null,null,"20, rue Nicole Zemmour, Le Belvedère Bt C",null,null,null,"16/09/1960",null,"X","X",null,"X","X"]
[5,"ROBERTO","Benjamin",null,null,null,null,null,null,"15/11/1946",null,"X","X","X","X"]
[6,"RICHARD","Raphaelle",null,null,null,null,null,null,"1942-06-12",null,"X","X","X","X","X"]
[7,"DURAND","Sayan",null,null,"44, Place du Cabot","MARSEILLE",13013,null,"21/11/1949",null,"X","X","X","X"]
[8,"DUBOIS","Helene",null,null,"44, Place du Cabot",null,null,null,"19/10/1947",null,"X","X",null,"X","X"]
[9,"MOREAU","Julien",null,null,"Avenue de la Campagne Berger",null,null,null,"29/12/1938","H","X","X","X"]
[11,"SIMONI","Nathan",null,null,"147, Avenue Clot Bey",null,null,null,"15/03/1952",null,"X","X","X","H","H",null,null,null,null,null,null,"H",null,null,"H","H","H"]
[12,"MICHELI","Alexandre",null,null,"147, avenue Clot Bey",null,null,null,"18/07/1954",null,"X","X",null,"X","X"]
[14,"LEROY","Adolphe",null,null,"11, Avenue Docteur Heckel",null,null,null,"24/01/1965",null,"X","X","X",null,"X"]
[15,"ROUXI","Valerie",null,null,"81, rue Borde",null,null,null,"23/04/1984",null,"X","X","X","X"]
[16,"DAVID","Antoine","22 22 22 22 22","55 55 55 55 55","xnbvbn","MARSEILLE",13007,"nbnbvc","1955-12-12","H",123,453,"X","X","X"]
[17,"BERTRAND","Charles","99 99 99 99 99","77 77 77 77 77","sqdgqg","LA CIOTAT",13600,"qsgfsd","14/05/1982",11,12345,98765,"X",null,"X"]
[18,"MOREL","Manuolo","55 55 55 55 55","33 33 33 33 33","cxbcx","MARSEILLE",13003,"xnxb","2975-01-06","H",55555,4444,"X","X","X"]
[19,"FOURNIER","Josette","11 11 11 11 11","22 22 22 22 22","qsdgsdf","MARSEILLE",13007,"sdqfgd","18/12/1970","F",9632,7412,null,"X","X"]
[20,"GIRARD","Vxcnv",null,null,null,null,null,null,null,"H"]
[21,"BONNET","Sdfhsdf","22 22 22 22 22","33 33 33 33 33","sdfhsdfh","LA CIOTAT",13600,"sdfhsdfh","1969-12-12","F",159,753,"X","X","X"]
[22,"DUPONT","Aaaaaaaaaa","11 11 11 11 11","11 11 11 11 11","aaaaaaaaaaa","LA CIOTAT",13600,"aaaaaaaaaa","1985-12-12","F",357,951,"X",null,"X"]
[23,"LAMBERT","Dfshsh","00 00 00 00 00","00 00 00 00 00","gfsjnsssn","ARLUN",18212,"gfhfs","2001-12-04","H",22222,33333,"X","X","X"]
[24,"FONTAINE","Ben","77 77 77 77 77","99 99 99 99 99","wwwwwwwwww","LA CIOTAT",13600,"wwwwwwwww","2002-01-09","H",2222,1111,"X","X","X"]
[25,"ROUSSEAU","Jimy","11 11 11 11 11","11 11 11 11 11","157 rue basse","LA CIOTAT",13600,"18 rue haute","1945-12-12","H",123,455,"X","X"]

{"sheet":"Extraction","index":2,"n_rows":15,"n_cols":16,"rows_kept":15,"cut":false,"hidden":false,"merged":[]}
["ID","NOM","Prénom","Tél. Fixe","Tél. Port","ADRESSE","VILLE","C.POST","E-mail","Date \nNaissance","Sexe","Licence","Carte","Tireur","Millieu","Pointeur"]
[1,"MARTINI","Antoinette","13/02/1962",null,"00 00 00 00 00",null,"79, Bd du Cabot","MARSEILLE",13008,null,"X","X","X","X","X"]
[2,"BERNARD","Lucas","13/04/1961",null,null,null,"5, rue du felibrige",null,null,null,"X","X","X",null,"X"]
[3,"THOMASI","Sophie","19/06/1947",null,null,null,"20, rue Nicole Zemmour, Le belvedère Bt C",null,null,null,"X","X",null,"X"]
[4,"PETITO","Enzo","16/09/1960",null,null,null,"20, rue Nicole Zemmour, Le Belvedère Bt C",null,null,null,"X","X",null,"X","X"]
[5,"ROBERTO","Benjamin","15/11/1946",null,null,null,null,null,null,null,"X","X","X","X"]
[6,"RICHARD","Raphaelle","1942-12-06",null,null,null,null,null,null,null,"X","X","X","X","X"]
[7,"DURAND","Sayan","21/11/1949",null,null,null,"44, Place du Cabot","MARSEILLE",13013,null,"X","X","X","X"]
[8,"DUBOIS","Helene","19/10/1947",null,null,null,"44, Place du Cabot",null,null,null,"X","X",null,"X","X"]
[9,"MOREAU","Julien","29/12/1938",null,null,null,"Avenue de la Campagne Berger",null,null,"H","X","X","X"]
[11,"SIMONI","Nathan","15/03/1952",null,null,null,"147, Avenue Clot Bey",null,null,null,"X","X","X","H","H"]
[12,"MICHELI","Alexandre","18/07/1954",null,null,null,"147, avenue Clot Bey",null,null,null,"X","X",null,"X","X"]
[14,"LEROY","Adolphe","24/01/1965",null,null,null,"11, Avenue Docteur Heckel",null,null,null,"X","X","X",null,"X"]
[15,"ROUXI","Valerie","23/04/1984",null,null,null,"81, rue Borde",null,null,null,"X","X","X","X"]
[16,"FEREZ","Antoine","1955-12-12","nbnbvc","22 22 22 22 22","55 55 55 55 55","xnbvbn","MARSEILLE",13007,"H",123,453,"X","X","X"]

{"sheet":"Plan d'action","index":3,"n_rows":50,"n_cols":15,"rows_kept":50,"cut":false,"hidden":false,"merged":[]}
["\"FORMULAIRE DE SAISIE\" Préfixé et nommé \"frm_Saisie\"",null,null,null,null,null,null,null,null,null,null,"Créer un formulaire personnalisé pour saisir des données sur Excel"]
["Tous les contrôles ont été préfixés et renommés :",null,null,null,null,null,null,null,null,null,null,"Explication du code VBA utilisé dans le tutoriel Créer un formulaire personnalisé Excel"]
[null,null,null,null,null,null,null,null,null,null,null,"Version texte"]
[null,"lbl_","= label (Intitulés)",null,null,null,null,null,null,null,null,null,null,"Lydia Provin"]
[null,"fra_","= Frame (Cadre)"]
[null,"txt_","= TextBox (zone de texte)",null,null,null,null,null,null,null,null,"CRÉER UNE LISTE DÉROULANTE SOUS EXCEL"]
[null,"cbo_","= Combobox (Liste déroulante)",null,null,null,null,null,null,null,null,"CRÉER UNE LISTE DÉROULANTE EXCEL SEMI-AUTOMATIQUE"]
[null,"btn_","= CommandButton (boutons de commande)",null,null,null,null,null,null,null,null,"CRÉER DES LISTES DÉROULANTES EN CASCADE AVEC EXCEL"]
[null,"Opt_","= OptionButton (Bouton d'option)"]
[null,"Chk_","= ChekBox (Case à cocher)",null,null,null,null,null,null,null,null,"Textbox Format Excell VBA",null,null,"razakmcr"]
[]
["Paramétrage des contrôles :"]
[]
[null,"txt_ID","Lecture seule ",null,"Propriétés de ta Textbox : Enable = False (elle est à True par défaut).",null,null,null,null,null,"FAIT"]
[]
[null,null,"Basculer le focus dans la txt_Nom",null,null,null,"Me.txt_Nom.SetFocus",null,null,null,"FAIT"]
[]
[null,null,null,"4 solutions à étudier :"]
[null,null,null,"<TextBox IsReadOnly=\"True\""]
[null,null,null,"Me.textbox1.enabled = false"]
[null,null,null,"Dans les propriétés de ta Textbox : Locked = True (elle est à False par défaut)."]
[null,null,null,"txt_ID.Visible = False"]
[]
[null,"txt_Nom","MAJUSCULE et saisie obligatoire",null,null,null,null,null,null,null,"FAIT"]
[null,"txt_Prenom","1ère lettre en Majuscule et saisie obligatoire ",null,null,null,null,null,null,null,"FAIT"]
[null,null,"interdire les chiffres dans les 2 textbox"]
[null,null,null,"2 Pistes à fouiller"]
[null,null,null,"Nom propre = Application.Proper(TextBox7.Value)"]
[null,null,null,"ff = StrConv(TextBox7, vbProperCase)"]
[]
[null,"txt_Ne_Le","Mise au format date",null,null,null,null,null,null,null,"FAIT"]
[null,null,"1. essaie de commencer par un plus gros chiffre que 31"]
[null,null,"2. essaie de mettre un mois plus grand que 12"]
[null,null,"3. essaie de taper 31/02/2017"]
[null,null,"4. essaie de taper plus qu'il n'en faut"]
[]
[]
[null,"txt_TelFix","Format téléphone et 10 chiffres maximum",null,null,null,null,null,null,null,"FAIT"]
[null,"txt_TelMob","Format téléphone et 10 chiffres maximum",null,null,null,null,null,null,null,"FAIT"]
[]
[]
[null,"cbo_Ville","Créer la liste des villes dans la feuille \"Datas\""]
[null,null,"Créer une liste déroulante dans cbo_Ville"]
[null,null,"Mise à jour automatique de la BDD  \"datas\" si la ville n'est pas dans la liste"]
[]
[null,"cbo_CP","Créer la liste des CP dans la feuille \"Datas\""]
[null,null,"Créer une liste déroulante dans cbo_CP"]
[null,null,"Mise à jour automatique de la BDD si N° de CP n'est pas dans la liste"]
[]
[null,"fra_Sexe","Saisie obligatoire (pas de civilité, M., Mme, Mlle)",null,null,null,null,null,null,null,"FAIT"]

{"sheet":"Notes personnelles","index":4,"n_rows":195,"n_cols":14,"rows_kept":195,"cut":false,"hidden":false,"merged":[]}
["forcer l'écriture alphabétique dans une textbox.",null,null,null,null,null,null,null,null,null,null,"Lydia","https://www.youtube.com/watch?v=IWVYNum2OKs"]
[null,"On pourrait simplement interdire la saisie d'un chiffre via l'évènement Keydown",null,null,null,null,null,null,null,null,null,null,"Article généraliste :"]
[null,null,null,null,null,null,null,null,null,null,null,null,"Macros-commandes VBA/Création de Formulaire"]
[null,"Private Sub TextBox1_KeyDown(ByVal KeyCode As MSForms.ReturnInteger, ByVal Shift As Integer)",null,null,null,null,null,null,null,null,null,null,"https://fr.m.wikiversity.org/wiki/Macros-commandes_VBA/Cr%C3%A9ation_de_Formulaire"]
[null,"Select Case KeyCode"]
[null,"    Case 48 To 57: KeyCode = 0",null,null,null,null,null,null,null,null,null,null,"Approche d'une résolution de besoin en VBA niveau débutant Obliger une saisie numérique dans une TextBox"]
[null,"    Case 96 To 105: KeyCode = 0",null,null,null,null,null,null,null,null,null,null,"https://didier-gonard.developpez.com"]
[null,"End Select",null,null,null,null,null,null,null,null,null,null,"https://didier-gonard.developpez.com/tutoriels/office/excel/obliger-saisie-numerique-dans-texbox/"]
[null,"End Sub"]
[]
[null,"Une autre solution consiste à vérifier qu’il n’y a pas de nombre dans la chaine de caractères composant le nom."]
[null,null,null,null,null,null,null,null,null,null,null,null,"Pour la listBox"]
[null,"Private Sub CommandButton_Valider1_Click()",null,null,null,null,null,null,null,null,null,null,"Learnaccess"]
[null,"Dim i As Integer",null,null,null,null,null,null,null,null,null,null,"Excel VBA - Comment utiliser les contrôles textBox et ListBox"]
[null,"    'Contrôle du nom opérateur"]
[null,"    For i = 1 To Len(TextBox_Operateur.Value)"]
[null,"        If IsNumeric(Mid(TextBox_Operateur.Value, i, 1)) Then"]
[null,"            MsgBox \"Nom opérateur incorrect\"",null,null,null,null,null,null,null,null,null,null,"Les meilleurs outils pour Microsoft Excel"]
[null,"            Exit Sub",null,null,null,null,null,null,null,null,null,null,"https://excel.developpez.com/outils/"]
[null,"        End If"]
[null,"    Next i"]
[]
[null,"Encore une autre :"]
[]
[null,null," On teste la saisie des champs dans le formulaire",null,null,null,null,"Excel VBA - Comment forcer la saisie obligatoire dans un Formulaire",null,null,null,null,null,"Learnaccess"]
[null,null,"Avec un message qui s'affiche dans un label"]
[null,"Private Sub CommandButton_Valider1_Click()"]
[null,"if Len(Me.txt_Nom) = 0 then"]
[null,"lbl_Message = \"Veuillez saisir un nom !"]
[null,null,"On bloque le focus sur la textBox"]
[null,"Me.txt_Nom.SetFocus"]
[null,null,"Pour les champs suivants :"]
[null,"ElseIf Len(Me.txt_Nom) = 0 then"]
[null,"lbl_Message = \"Veuillez saisir un nom !"]
[null,"Me.txt_Nom.SetFocus"]
[null,"End sub"]
[]
[null,"D'autres encore concernant la saidie numérique:"]
[null,"3 manières d’obliger la saisie numérique dans un Textbox"]
[]
[null,"“textbox” dans lesquels on veut forcer l’utilisateur à écrire uniquement des nombres."]
[null,"présente ici trois manières différentes pour limiter l’écriture dans un textbox à des nombres (0-9) seulement :"]
[null,"(Note : dans tous les cas, l’utilisateur est averti par un son (Beep) s’il entre un caractère interdit)."]
[]
[null,null,"1) Expression Régulière (RegExp)"]
[null,null,"Très puissant mais plus complexe à comprendre. Ici, on vérifie que la chaîne de caractères dans le textbox contient uniquement des nombres à l’aide du “Pattern” ^\\d*$"]
[]
[null,null,"En résumé  :"]
[]
[null,null,"^  signifie : début de la chaîne de caractère"]
[]
[null,null,"\\d signifie : un nombre (0-9)"]
[]
[null,null,"*  le caractère précédent (\\d) peut être répété multiple fois"]
[]
[null,null,"$ signifie : fin de la chaîne de caractère"]
[]
[]
[null,null,"Private Sub TextBox1_KeyPress(ByVal KeyAscii As MSForms.ReturnInteger)"]
[]
[null,null,"   With CreateObject(\"VBScript.RegExp\")"]
[null,null,"      .Pattern = \"^\\d*$\""]
[null,null,"      .IgnoreCase = True"]
[null,null,"      If Not .Test(TextBox1.Value & Chr(KeyAscii)) Then KeyAscii = 0: Beep"]
[null,null,"   End With"]
[]
[null,null,"End Sub"]
[]
[null,null,"2) Vérification de la touche pressée"]
[]
[null,null,"Ici, on vérifie que la touche pressée est valide ou non. KeyAscii correspond au code de la touche qui a été pressée. Si la touche appuyée n’est pas valide,"]
[null,null," on lui attribue la valeur 0, ce qui est équivalent à annuler l’appui de cette touche."]
[]
[null,null,"Private Sub TextBox1_KeyPress(ByVal KeyAscii As MSForms.ReturnInteger)"]
[null,null,"   Select Case KeyAscii"]
[null,null,"   Case vbKey0 To vbKey9, vbKeyBack, vbKeyClear, vbKeyDelete, vbKeyLeft, _"]
[null,null,"        vbKeyRight, vbKeyUp, vbKeyDown, vbKeyTab"]
[null,null,"   Case Else"]
[null,null,"      KeyAscii = 0"]
[null,null,"      Beep"]
[null,null,"   End Select"]
[null,null,"End Sub"]
[]
[null,null,"3) Fonction InStr"]
[]
[null,null,"De façon similaire, ici on vérifie encore que la touche pressée (KeyAscii) fait partie de la chaîne de caractère acceptée (0123456789). La fonction Chr renvoie une valeur de type String. Si la chaîne de caractère ne fait pas partie de “0123456789″, la fonction InStr retourne 0. On annule donc l’appui de la touche avec KeyAscii = 0 et on avertir l’utilisateur avec un Beep."]
[]
[null,null,"Private Sub TextBox1_KeyPress(ByVal KeyAscii As MSForms.ReturnInteger)"]
[null,null,"   If InStr(\"0123456789\", Chr(KeyAscii)) = 0 Then KeyAscii = 0: Beep"]
[null,null,"End Sub"]
[]
["VBA: Vérifier la validité d’une adresse e-mail"]
[]
["Vérifier en VBA (et donc également en Excel) si une adresse e-mail est valide n'est pas une chose bien compliquée. Les règles ne sont pas très difficiles "]
["– pour une utilisation plus pratique, le code qui suit ne s'applique pas aux adresses e-mail contenant des commentaires et d'autres \"spécialités\" qui ne "]
["sont pas utilisées par 99,9% des utilisateurs."]
[]
["Règles d'une adresse e-mail correcte"]
[]
["Voici donc les règles de base qui sont utilisées dans la fonction VBA proposée:"]
[]
[null,"le nom d'utilisateur peut contenir les caractères: \"a -> z\", \"A -> Z\", \"0 -> 9\", de \"-\", \"_\", \".\" et les caractères spéciaux \"!#$%&'*+-/=?^_`{|}~\""]
[null,"le nom de domaine peut contenir les caractères: \"a -> z\", \"A -> Z\", \"0 -> 9\", \"-\" et \".\""]
[null,"utilisation obligatoire d'un \"@\""]
[null,"minimum 1 caractère avant \"@\""]
[null,"le nom de domaine et le suffixe après le \"@\""]
[null,"le nom de domaine ne peut pas commencer ni se terminer par \"-\""]
[null,"le suffixe doit contenir au moins deux caractères"]
[null,"plusieurs points (\".\") ne peuvent pas se suivre (ex: \"..\")"]
[null,"La page Wikipédia avec le détail de toutes les règles de validité d'une adresse e-mail (en anglais)."]
[]
["Ceci peut être vérifié par un coup d’œil en une seconde dans le cas des adresses \"classiques\" (qui ne contiennent pas les caractères spéciaux). "]
["Le problème arrive au cas où vous avez un fichier Excel avec une liste de plusieurs centaines, voire milliers, de clients, de fournisseurs,… "]
["À ce moment-là, un coup d’œil ne suffit plus."]
[]
["Et comme aujourd'hui, les adresses e-mail des clients ou des contacts constituent un bien précieux, notamment dans les entreprises,"]
[" il vaut mieux d'en prendre soin. Une base de donnée des clients collectée via un formulaire web ne sert pas à grande chose si elle est remplie des adresses e-mail incorrectes."]
[]
["C'est pourquoi je vous propose une fonction qui fera l'affaire. Cette fonction VBA vérifie la validité d'une adresse e-mail selon les critères cités plus haut."]
[" Elle retourne comme résultat le Boolean (\"VRAI\" ou \"FAUX\") selon que l'adresse e-mail soit valide ou pas."]
[]
["Code VBA de la fonction qui vérifie si une adresse e-mail est valide"]
[]
["Cette fonction peut être utilisée dans vos macros VBA ou comme une UDF (User Defined Function) "]
["– c'est à dire dans les Feuilles Excel tout comme n'importe quelle autre fonction Excel (voir la capture d'écran)."]
[]
[null,"Public Function AdresseEmailValide(ByVal EmailAVerifier As String) As Boolean"]
[null,"'par: https://excel-malin.com"]
[null,"    "]
[null,"    'définition des variables et des constantes"]
[null,"    Const CaracteresAdmisUtilisateur = \"abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890.!#$%&'*+-/=?^_`{|}~\""]
[null,"    Const CaracteresAdmisDomaine = \"abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890.-\""]
[null,"    Dim NomUtilisateur As String"]
[null,"    Dim EmplacementArobase As Integer"]
[null,"    Dim Domaine As String"]
[null,"    "]
[null,"    'vérification de l'adresse"]
[null,"    EmplacementArobase = InStr(1, EmailAVerifier, \"@\")"]
[null,"    If EmplacementArobase = 0 Then GoTo AdresseIncorrecte"]
[null,"    If InStr(EmplacementArobase + 1, EmailAVerifier, \"@\") > 0 Then GoTo AdresseIncorrecte"]
[null,"    "]
[null,"    NomUtilisateur = Left(EmailAVerifier, EmplacementArobase - 1)"]
[null,"    Domaine = Right(EmailAVerifier, Len(EmailAVerifier) - EmplacementArobase)"]
[null,"    Suffixe = Right(EmailAVerifier, Len(EmailAVerifier) - InStrRev(EmailAVerifier, \".\"))"]
[null,"   "]
[null,"    If Left(NomUtilisateur, 1) = \".\" Or Right(NomUtilisateur, 1) = \".\" Then GoTo AdresseIncorrecte"]
[null,"    If InStr(1, Domaine, \".\") = 0 Then GoTo AdresseIncorrecte"]
[null,"    If Left(Domaine, 1) = \".\" Or Right(Domaine, 1) = \".\" Then GoTo AdresseIncorrecte"]
[null,"    If Left(Domaine, 1) = \"-\" Or Right(Domaine, 1) = \"-\" Then GoTo AdresseIncorrecte"]
[null,"    If Len(Suffixe) < 2 Then GoTo AdresseIncorrecte"]
[null,"     "]
[null,"    For i = 1 To Len(NomUtilisateur)"]
[null,"        If InStr(1, CaracteresAdmisUtilisateur, Mid(NomUtilisateur, i, 1)) = 0 Then GoTo AdresseIncorrecte"]
[null,"    Next"]
[null,"    For i = 1 To Len(Domaine)"]
[null,"        If InStr(1, CaracteresAdmisDomaine, Mid(Domaine, i, 1)) = 0 Then GoTo AdresseIncorrecte"]
[null,"    Next"]
[null,"    For i = 1 To Len(EmailAVerifier)"]
[null,"        If Mid(EmailAVerifier, i, 1) = \".\" And Mid(EmailAVerifier, i + 1, 1) = \".\" Then GoTo AdresseIncorrecte"]
[null,"    Next i"]
[null,"    "]
[null,"    AdresseEmailValide = True"]
[null,"    Exit Function"]
[null," "]
[null,"AdresseIncorrecte:"]
[null,"    AdresseEmailValide = False"]
[null,"End Function"]
[]
["L'exemple de l'utilisation de la fonction AdresseEmailValide dans une procédure (Sub)"]
[]
["Cet exemple vérifie l'a validité de l'adresse \"info@monwebsite.fr\" et renvoie un message avec le résultat."]
[]
[null,"Sub ExempleVerificationEmail()"]
[null,"'par: https://excel-malin.com"]
[]
[null,"Application.ScreenUpdating = False"]
[null,"On Error GoTo ExempleErreur"]
[null,"Dim AdresseEmail As String"]
[]
[null,"AdresseEmail = \"info@monwebsite.fr\""]
[null,"Verification = AdresseEmailValide(AdresseEmail)"]
[]
[null,"If Verification = True Then"]
[null,"    MsgBox \"Ceci est une adresse e-mail valide...\""]
[null,"Else"]
[null,"    MsgBox \"Cette adresse e-mail n'est pas valide...\""]
[null,"End If"]
[]
[null,"Application.ScreenUpdating = True"]
[null,"Exit Sub"]
[]
[null,"ExempleErreur:"]
[null,"MsgBox \"Une erreur s'est produite...\""]
[null,"Application.ScreenUpdating = True"]
[null,"End Sub"]

{"sheet":"Sauvegarde Membres","index":5,"n_rows":49,"n_cols":17,"rows_kept":49,"cut":false,"hidden":false,"merged":[]}
["ID","NOM","Prénom","Tél. Fixe","Tél. Port","ADRESSE","VILLE","C.POST","E-mail","Date \nNaissance","Sexe","Licence","Carte","Tireur","Millieu","Pointeur"]
[1,"MARTINI","Antoinette","00 00 00 00 00",null,"79, Bd du Cabot","MARSEILLE",13008,null,"1962-02-13","F","X","X","X","X","X","X"]
[2,"BERNARD","Lucas",null,null,"5, rue du felibrige",null,null,null,"13/04/1961","H","X","X","X",null,"X","X"]
[3,"THOMASI","Sophie",null,null,"20, rue Nicole Zemmour, Le belvedère Bt C",null,null,null,"19/06/1947","F","X","X",null,"X",null,"X"]
[4,"PETITO","Enzo",null,null,"20, rue Nicole Zemmour, Le Belvedère Bt C",null,null,null,"16/09/1960","H","X","X",null,"X","X","X"]
[5,"ROBERTO","Benjamin",null,null,null,null,null,null,"15/11/1946","H","X","X","X","X",null,"X"]
[6,"RICHARD","Raphaelle",null,null,null,null,null,null,"1942-06-12","F","X","X","X","X","X","X"]
[7,"DURAND","Sayan",null,null,"44, Place du Cabot","MARSEILLE",13013,null,"21/11/1949","H","X","X","X","X",null,"X"]
[8,"DUBOIS","Helene",null,null,"44, Place du Cabot",null,null,null,"19/10/1947","F","X","X",null,"X","X","X"]
[9,"MOREAU","Julien",null,null,"Avenue de la Campagne Berger",null,null,null,"29/12/1938","H","X","X","X",null,null,"X"]
[11,"SIMONI","Nathan",null,null,"147, Avenue Clot Bey",null,null,null,"15/03/1952","H","X","X","X","X",null,"X"]
[12,"MICHELI","Alexandre",null,null,"147, avenue Clot Bey",null,null,null,"18/07/1954","H","X","X",null,"X","X"]
[14,"LEROY","Adolphe",null,null,"11, Avenue Docteur Heckel",null,null,null,"24/01/1965","H","X","X","X",null,"X"]
[15,"ROUXI","Valerie",null,null,"81, rue Borde",null,null,null,"23/04/1984","F","X","X","X","X",null,"X"]
[16,"DAVID","Henriette",null,null,"2, Avenue Moutin",null,null,null,"1970-03-03","F","X","X","X","X",null,"X"]
[17,"BERTRAND","Alexandra",null,null,"13, Lotissement Les Plaines",null,null,null,"16/01/1948","F","X","X","X","X",null,"X"]
[18,"MOREL","Yanis",null,null,"3052, Chemin du Moulin",null,null,null,"1950-07-07","H","X","X",null,null,"X","X"]
[19,"FOURNIER","Sofia",null,null,"3052, Chemin du Moulin",null,null,null,"1947-01-11","F","X","X",null,"X","X","X"]
[20,"GIRARD","Alix",null,null,"8 Clos des Fontaines",null,null,null,"28/06/1973","F","X","X",null,"X","X","X"]
[21,"BONNET","Maxime",null,null,"Chemin Colline St Jodseph, Parc La Bruyère","ALLAUCH",13190,null,"14/02/1945","H","X","X","X","X",null,"X"]
[22,"DUPONT","Kevina",null,null,null,null,null,null,"17/09/1937","F","X","X","X","X",null,"X"]
[23,"LAMBERT","Dylan",null,null,"570, Chemin de Bon rencontre",null,null,null,"1938-08-08","H","X","X",null,null,"X","X"]
[24,"FONTAINE","Samuel",null,null,"221, Ancien chemin de Cassis",null,null,null,"1939-01-01","H","X","X","X",null,"X","X"]
[25,"ROUSSEAU","Richard",null,null,null,null,null,null,"1936-02-04","H","X","X","X","X","X","X"]
[26,"VINCENTI","Philippe",null,null,"184, Avenue de Toulon",null,null,null,"31/03/1963","H","X","X","X","X",null,"X"]
[27,"MULLER","Antoine",null,null,"122, Avenue de la Panouse","MARSEILLE",13008,null,"23/05/1942","H","X","X",null,"X","X","X"]
[28,"LEFEVRE","Yolande",null,null,"26, Chemin de la Palama","ST MAXIMIN",83470,null,"1947-05-07","F","X","X",null,null,"X","X"]
[29,"FAURE","Joel",null,null,"43, Boulevard frédéric Chevillon",null,null,null,"19/08/1955","H","X","X",null,"X","X","X"]
[30,"ANDRE","Armand",null,null,"résidense Allée des pins, Bt La Felouque",null,null,null,"1958-06-11","H","X","X",null,null,"X","X"]
[31,"MERCIER","Annie",null,null,"444, Ancien Chemin d'Aix, Bt H",null,null,null,null,"F","X","X",null,"X",null,"X"]
[32,"BLANC","David",null,null,null,null,null,null,null,"H","X","X",null,null,null,"X"]
[33,"GUERIN","Mireille",null,null,null,null,null,null,null,"F","X","X",null,"X","X","X"]
[34,"BOYER","Marcel",null,null,null,null,null,null,null,"H","X","X","X","X","X","X"]
[35,"GARNIER","Claudine",null,null,"Parc Belle fontaine, Route gepetto Bt A",null,null,null,"29/08/1955","F","X","X",null,"X","X","X"]
[36,"CHEVALIER","Robert",null,null,"173, Boulevard de St Loup, Le Plein ciel Bt 3",null,null,null,null,"H","X","X","X",null,"X","X"]
[37,"FRANCOIS","Jean-Marc",null,null,null,null,null,null,null,"H","X","X","X","X",null,"X"]
[38,"LEGRAND","Gérard",null,null,null,null,null,null,null,"H","X","X",null,"X","X","X"]
[39,"GAUTHIER","Nicolas",null,null,null,null,null,null,null,"H","X","X","X","X",null,"X"]
[41,"PERRIN","Nicole",null,null,"1, Avenue du corail",null,null,null,"27/10/1947","F","X","X","X","X","X"]
[43,"REMI","Serge",null,null,null,null,null,null,null,"H",null,null,null,null,null,"X"]
[45,"MOL","Joe",null,null,null,"MARSEILLE",13010,null,null,"H",null,null,null,null,null,"X"]
[46,"NONO","Nini",null,null,"huuuu","MARSEILLE",13011,null,null,"F"]
[48,"COLIN","Sophie",null,"00 00 00 00 00","hhhhhhhhhhhhhhhhhhhhhh","MARSEILLE",13011,null,null,"F",null,null,null,null,null,"X"]
[49,"LUIGGI","Teo",null,null,null,"PERTUIS",84120,null,null,"H",null,null,null,null,null,"X"]
[50,"COCO","Chanel",null,null,null,"MARSEILLE",13008,null,null,"F",null,null,null,null,null,"X"]
[51,"AURIOL","Michel",null,null,null,null,null,null,null,"H","X"]
[52,"CALI","Josette",null,null,null,null,null,null,null,"F",11111111111]
[53,"DELBEC","Alain",null,null,null,null,null,null,null,"H",null,52155555]
[54,"BERNARD ","Lucas",null,null,null,null,null,null,null,"H",null,null,null,null,null,"X"]