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 :

Interraction Module/UserForm VBA


Sujet :

Macros et VBA Excel

  1. #1
    Nouveau membre du Club
    Homme Profil pro
    Analyste d'exploitation
    Inscrit en
    Septembre 2020
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Indre et Loire (Centre)

    Informations professionnelles :
    Activité : Analyste d'exploitation
    Secteur : Enseignement

    Informations forums :
    Inscription : Septembre 2020
    Messages : 5
    Par défaut Interraction Module/UserForm VBA
    Bonjour à tous,
    Cela fait quelques années que je n'ai pas fait de VBA et je bloque sur certains points....
    Je souhaite automatiser un fichier de suivie des actions d'accompagnements réalisé par certains de mes collègues.
    J'ai donc une feuille "Individu" qui me sert de BDD (700 lignes), une feuille "Suivie" à remplir en fonction de l'ID de mes individus, une feuille "Nouveau" qui me permet de saisir le nom de l'action et les noms, prenoms et mails des personnes qui ont assisté à ces actions.
    J'ai donc créé un module qui me permet de comparer les noms, prenoms et mails des personnes ayant participé à l'action et ma base de donnée que je stock dans un onglet "Temp". Le but de cette manip est d'éviter les fautes de frappe. Une fois que cela est réalisé je veux faire apparaitre un userform qui répèterait les infos contenus dans ma feuille "Nouveau" et une combobox pour repérer si l'individu existe déjà ou non via l'onglet "Temp". Ensuite je vais ajouter deux buttons, un "valider" si la personne est dans la liste, un "Ajouter" pour alimenter ma base "Individu".

    J'ai cependant un problème pour initialiser les valeurs de mon Userform, j'ai déclarer des variables en public mais impossible de les utiliser, est ce que vous pouvez m'éclairer?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
     
    Public nom As String
    Public prenom As String
    Public mail As String
     
    Public Sub nom()
    Dim valeur As String
    Dim LigneInd As Integer
    Dim LigneNew As Integer
    Dim URF As String
    Dim statut As String
    Dim nomt As String
    Dim prenomt As String
    Dim mailt As String
    Dim UFRt As String
    Dim statutT As String
    Dim concat As String
    Dim idt As String
    Dim a As Integer
    Dim plage As Variant
     
     
     
    LigneNew = 2
    'récupération des nouvelles itérations
    While Worksheets("Nouveau").Cells(LigneNew, 3).Value <> ""
        nom = Worksheets("Nouveau").Cells(LigneNew, 3).Value
        prenom = Worksheets("Nouveau").Cells(LigneNew, 4).Value
        mail = Worksheets("Nouveau").Cells(LigneNew, 5).Value
     
        'nettoyage des noms
        nom = MajSansAccent(nom)
        prenom = MajSansAccent(prenom)
        mail = LCase(mail)
        LigneInd = 2
        'Pour retrouver les individus
        While Worksheets("Individu").Cells(LigneInd, 1).Value <> ""
            'on récupère les infos d'une ligne dans la bdd Individu
            nomt = Worksheets("Individu").Cells(LigneInd, 1).Value
            prenomt = Worksheets("Individu").Cells(LigneInd, 2).Value
            mailt = LCase(Worksheets("Individu").Cells(LigneInd, 3).Value)
            UFRt = LCase(Worksheets("Individu").Cells(LigneInd, 4).Value)
            statutT = LCase(Worksheets("Individu").Cells(LigneInd, 5).Value)
            concat = LCase(Worksheets("Individu").Cells(LigneInd, 6).Value)
            idt = LCase(Worksheets("Individu").Cells(LigneInd, 7).Value)
            'test de correspondance
            If ((InStr(1, nom, nomt) <> 0 Or InStr(1, nomt, nom) <> 0) And (nom <> "" And nomt <> "")) Or ((InStr(1, prenom, prenomt) <> 0 Or InStr(1, prenomt, prenom) <> 0) And (prenom <> "" And prenomt <> "")) Or ((InStr(1, mail, mailt) <> 0 Or InStr(1, mailt, mail) <> 0) And (mail <> "" And mailt <> "")) Then
                a = 1
                While Worksheets("Temp").Cells(a, 1).Value <> ""
                    a = a + 1
                Wend
                'stockage des données pour liste déroulante
                Worksheets("Temp").Cells(a, 1).Value = idt
                Worksheets("Temp").Cells(a, 2).Value = nomt
                Worksheets("Temp").Cells(a, 3).Value = prenomt
                Worksheets("Temp").Cells(a, 5).Value = mailt
                Worksheets("Temp").Cells(a, 4).Value = concat
                Worksheets("Individu").Cells(LigneInd, 8).Value = "x"
            End If
     
     
            LigneInd = LigneInd + 1
        Wend
        UserForm.Show
        LigneNew = LigneNew + 1
        Sheets("Temp").Cells.Clear
        Worksheets("Individu").Cells(1, 8).EntireColumn.Delete
    Wend
     
     
     
    End Sub
     
    Function MajSansAccent(test As String) As String
    Dim VAccent As String
    Dim VSsAccent As String
     
     
    VAccent = "àáâãäåéêëèìíîïðòóôõöùúûüç-.,?"
    VSsAccent = "aaaaaaeeeeiiiioooooouuuuc    "
    Dim Bcle As Integer
     
    For Bcle = 1 To Len(VAccent)
      test = Replace(test, Mid(VAccent, Bcle, 1), Mid(VSsAccent, Bcle, 1))
    Next Bcle
    test = Replace(test, " ", "")
    MajSansAccent = UCase(test)
    End Function
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
     
    Public Sub UserForm_Initialize()
    Dim I As Integer
    Dim J As Integer
    Dim Tbl()
     
    Lnom.Caption = nom
    Lprenom.Caption = prenom
    Lmail = mail
    ComboBox1.Clear
    For I = 1 To Worksheets("Temp").[A65536].End(xlUp).Row
        If Range("A" & I) <> "" Then
            J = J + 1
            ReDim Preserve Tbl(1 To J)
            Tbl(J) = Range("D" & I)
        End If
    Next I
    ComboBox1.List() = Tbl()
    End Sub

  2. #2
    Expert confirmé
    Homme Profil pro
    retraité
    Inscrit en
    Juin 2012
    Messages
    3 432
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : retraité
    Secteur : Associations - ONG

    Informations forums :
    Inscription : Juin 2012
    Messages : 3 432
    Par défaut
    Bonjour,

    Je n'ai pas trouvé l'origine du problème, mais ce fil de discussion devrait vous intéresser: Repérer des "presque-doublons".

    A noter que d'un côté nom = MajSansAccent(nom), mais que de l'autre nomt n'est pas mis sans accent (ou du moins cela n'en a pas l'air).

    Cordialement.

  3. #3
    Nouveau membre du Club
    Homme Profil pro
    Analyste d'exploitation
    Inscrit en
    Septembre 2020
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Indre et Loire (Centre)

    Informations professionnelles :
    Activité : Analyste d'exploitation
    Secteur : Enseignement

    Informations forums :
    Inscription : Septembre 2020
    Messages : 5
    Par défaut
    Bonjour, merci de votre réponse.
    Je n'ai pas de soucis pour l'identification des "presque doublons", ma base individu est déjà nettoyer par la même fonction au préalable (j'ai lancé ma fonction sur l'ensemble de ma feuille pour les noms et prénoms).
    Ici mon véritables problèmes etait le partage des variables avec la boucle qui m'ouvre mon userform, je n'arrivais pas à récupérer mes variables Public. Finalement j'avais ma procédure Nom et une Variable public Nom, VBA ne comprenais donc pas ce qu'il devait faire (ce qui est normal).

    Cordialement

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

Discussions similaires

  1. [XL-2000] Userform VBA Excel
    Par Igloobel dans le forum Macros et VBA Excel
    Réponses: 7
    Dernier message: 12/04/2015, 13h49
  2. Copie d'une UserForm et d'un module en vba.
    Par Snooky68 dans le forum Macros et VBA Excel
    Réponses: 0
    Dernier message: 07/04/2008, 14h32
  3. [VBA-E]Pb de communica° entre module/UserForm[débutant]
    Par vivelesgnous dans le forum Macros et VBA Excel
    Réponses: 6
    Dernier message: 02/03/2006, 09h44
  4. Supression de macro Excel et module en VBA
    Par Sammy dans le forum Macros et VBA Excel
    Réponses: 6
    Dernier message: 17/10/2005, 10h25
  5. appel module dans vba
    Par scully2501 dans le forum Access
    Réponses: 3
    Dernier message: 14/09/2005, 16h37

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