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 :

Ecriture d'un historique (d'email envoyés) sur un fichier Excel à partir d'un userform


Sujet :

Macros et VBA Excel

  1. #1
    Candidat au Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Février 2016
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 35
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2016
    Messages : 6
    Points : 3
    Points
    3
    Par défaut Ecriture d'un historique (d'email envoyés) sur un fichier Excel à partir d'un userform
    Bonjour à tous!

    J'espère que vous pourrez m'aider, je vous explique en quelques mots mon projet et mon problème!
    J'ai crée un userform sur lequel je complète plusieurs textboxs et sur lequel j'ai également un multipage (2 pages) avec plusieurs frames et plusieurs checkbox sur chaques frames.
    Cet userform me permet d'envoyer automatiquement un email (avec pj) aux personnes concernées grâce aux checkboxs.
    J'ai donc un commandbutton qui me permets d'envoyer l'email (il appelle la procédure) et il appelle également normalement une autre procédure, qui me permettrais de répertorier les emails envoyés avec plusieurs informations : isin,nom du fonds, devise, société de gestion, assureurs (nom des frames) et nom des contrats (checkboxs : il peut y en avoir plusieurs par assureurs) et de l'inscrire sur une feuille excel.
    C'est là que mon problème se pose : j'arrive à inscrire une seule ligne... donc un seul assureur...j'ai cherché pendant des heures, j'ai essayé plein de chose et je n'ai pas trouvé de réponse.
    Ci après mon début de code (et qu'une partie avec deux assureurs seulement) pour cette procédure :

    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
    Sub Update_Historical_Demands()
     
    Dim wb As Workbook
    Dim ws1 As Worksheet
    Dim lastRow As Long
    Dim ctrl As Control, ctr As Control
    Dim fr1 As Boolean, fr2 As Boolean, fr3 As Boolean, fr4 As Boolean, fr5 As Boolean, fr6 As Boolean, fr7 As Boolean, fr8 As Boolean
     
    Set wb = ThisWorkbook
    Set ws1 = wb.Worksheets("RecapHistoDemandeRef")
     
    lastRow = ws1.Range("A" & Rows.Count).End(xlUp).Row + 1
     
    For Each ctrl In UserForm1.Controls
            If TypeOf ctrl Is msforms.checkbox Then
                Select Case ctrl.Parent.name
                Case "FrameBP2Axa"
                If ctrl.Value = True Then fr4 = True
     
                Case "FrameBP2Allianz"
                    If ctrl.Value = True Then fr5 = True
     End Select
     End If
     Next ctrl
     
      If fr4 = True Then
    ws1.Cells(lastRow, 1) = UserForm1.TbxISIN.Value
    ws1.Cells(lastRow, 2) = UserForm1.TbxNom.Value
    ws1.Cells(lastRow, 3) = UserForm1.TbxDevise.Value
    ws1.Cells(lastRow, 4) = UserForm1.TbxSdG.Value
    ws1.Cells(lastRow, 5) = ws1.Cells(1, 9)
    ws1.Cells(lastRow, 6) = "Axa"
    ws1.Cells(lastRow, 7) = "nomcontrat1"
     
    Else
     
    If fr5 = True Then
    ws1.Cells(lastRow, 1) = UserForm1.TbxISIN.Value
    ws1.Cells(lastRow, 2) = UserForm1.TbxNom.Value
    ws1.Cells(lastRow, 3) = UserForm1.TbxDevise.Value
    ws1.Cells(lastRow, 4) = UserForm1.TbxSdG.Value
    ws1.Cells(lastRow, 5) = ws1.Cells(1, 9)
    ws1.Cells(lastRow, 6) = "Allianz"
    ws1.Cells(lastRow, 7) = "nomcontrat2"
     
    End If
    End If
    end sub
    Je compte sur vos lumières!!
    Merciiiiii

  2. #2
    Expert confirmé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2013
    Messages
    3 617
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Alimentation

    Informations forums :
    Inscription : Mai 2013
    Messages : 3 617
    Points : 5 912
    Points
    5 912
    Par défaut
    Bonjour,

    Premièrement, quand tu mets du code sélectionne-le et utilise le bouton # en haut du message pour le formater.

    Je ne suis pas certain de comprendre tout ce que tu fais, mais bon...
    Si tu mettais le Next ctrl à la fin avant le End Sub ?
    MPi²

  3. #3
    Candidat au Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Février 2016
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 35
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2016
    Messages : 6
    Points : 3
    Points
    3
    Par défaut
    Bon je viens d'essayer mais non....merci quand même!
    C'est assez compliqué à expliquer!!
    Enfaite à chaque fois que j'ouvre mon userform, c'est pour envoyer un email à un ou plusieurs assureurs pour référencer des fonds sur un ou plusieurs contrats...
    Et je veux qu'à chaque fois que j'envoi un email, la demande s'enregistre sur excel (une ligne par assureur).
    Et mon problème, c'est que je n'arrive pas à inscrire plus d'une ligne, je ne comprends pas pourquoi et je suis à court d'idée!!
    Je sais pas si c'est plus clair....

  4. #4
    Expert confirmé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2013
    Messages
    3 617
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Alimentation

    Informations forums :
    Inscription : Mai 2013
    Messages : 3 617
    Points : 5 912
    Points
    5 912
    Par défaut
    Et comme ceci, en incémentant la ligne de destination ?

    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
    Sub Update_Historical_Demands()
        Dim wb As Workbook
        Dim ws1 As Worksheet
        Dim lastRow As Long
        Dim ctrl As Control, ctr As Control
        Dim fr1 As Boolean, fr2 As Boolean, fr3 As Boolean, fr4 As Boolean, fr5 As Boolean, fr6 As Boolean, fr7 As Boolean, fr8 As Boolean
     
        Set wb = ThisWorkbook
        Set ws1 = wb.Worksheets("RecapHistoDemandeRef")
     
        lastRow = ws1.Range("A" & Rows.Count).End(xlUp).Row + 1
     
     
        For Each ctrl In UserForm1.Controls
            If TypeOf ctrl Is msforms.CheckBox Then
                Select Case ctrl.Parent.Name
                    Case "FrameBP2Axa"
                        If ctrl.Value = True Then fr4 = True
     
                    Case "FrameBP2Allianz"
                        If ctrl.Value = True Then fr5 = True
                End Select
            End If
     
            If fr4 = True Then
                ws1.Cells(lastRow, 1) = UserForm1.TbxISIN.Value
                ws1.Cells(lastRow, 2) = UserForm1.TbxNom.Value
                ws1.Cells(lastRow, 3) = UserForm1.TbxDevise.Value
                ws1.Cells(lastRow, 4) = UserForm1.TbxSdG.Value
                ws1.Cells(lastRow, 5) = ws1.Cells(1, 9)
                ws1.Cells(lastRow, 6) = "Axa"
                ws1.Cells(lastRow, 7) = "nomcontrat1"
     
            ElseIf fr5 = True Then
                ws1.Cells(lastRow, 1) = UserForm1.TbxISIN.Value
                ws1.Cells(lastRow, 2) = UserForm1.TbxNom.Value
                ws1.Cells(lastRow, 3) = UserForm1.TbxDevise.Value
                ws1.Cells(lastRow, 4) = UserForm1.TbxSdG.Value
                ws1.Cells(lastRow, 5) = ws1.Cells(1, 9)
                ws1.Cells(lastRow, 6) = "Allianz"
                ws1.Cells(lastRow, 7) = "nomcontrat2"
     
            End If
     
            lastRow = lastRow + 1   'incrémente la  ligne
        Next ctrl
     
    End Sub
    MPi²

  5. #5
    Candidat au Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Février 2016
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 35
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2016
    Messages : 6
    Points : 3
    Points
    3
    Par défaut
    Bon alors ça ne marche pas, mais il se passe un truc bizarre! entre la ligne 27 et la ligne 52, ca me remplit toutes les données mais uniquement pour Axa et pas pour l'autre... Je comprends pas!!
    Je suis sure que c'est un petit truc à rajouter en plus pour que ça marche...

    J'essaie de remettre le code comme tu as fait mais je n'y arrive pas, je clique sur # et puis je le met où le code?
    ???

    Désolée, je suis novice sur le forum!!!

  6. #6
    Expert confirmé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2013
    Messages
    3 617
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Alimentation

    Informations forums :
    Inscription : Mai 2013
    Messages : 3 617
    Points : 5 912
    Points
    5 912
    Par défaut
    Il faudrait peut-être que tu t'assures de ce qui est écrit ici
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
            If TypeOf ctrl Is msforms.CheckBox Then
                Select Case ctrl.Parent.Name
                    Case "FrameBP2Axa"
                        If ctrl.Value = True Then fr4 = True
     
                    Case "FrameBP2Allianz"
                        If ctrl.Value = True Then fr5 = True
                End Select
            End If
    Est-ce que FrameBP2Allianz est bien le bon nom et bien écrit ?

    Pour le code, une fois qu'il est copié dans ton message, sélectionne-le et clique le bouton #
    MPi²

Discussions similaires

  1. Créer une formule sur un fichier excel à partir d'Access
    Par ver_for dans le forum VBA Access
    Réponses: 2
    Dernier message: 13/05/2010, 14h04
  2. Réponses: 4
    Dernier message: 02/05/2005, 20h25
  3. [Excel] Travailler sur un fichier excel existant
    Par scoder dans le forum Bibliothèques et frameworks
    Réponses: 2
    Dernier message: 26/10/2004, 12h54
  4. Extraction de données sur des fichiers excel
    Par iupgeii dans le forum MFC
    Réponses: 3
    Dernier message: 23/01/2004, 13h53

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