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 :

VBA ViewList compilation [XL-2007]


Sujet :

Macros et VBA Excel

  1. #1
    Candidat au Club
    Homme Profil pro
    Inscrit en
    Mars 2013
    Messages
    14
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Mars 2013
    Messages : 14
    Points : 3
    Points
    3
    Par défaut VBA ViewList compilation
    Salut ts le monde,

    Je commence en VBA et j'essaye de construire un fichier qui permette aux utilisateurs de completer leurs notes de frais.

    Je souhaite utiliser un userform avec a l interieur une liste view qui affiche directement quand on appuye sur un bouton les résultat(UserFormBusinesstrip)

    J'ai deux questions:

    J'arrive bien a affiché un resultat dans la premiere collone de ma listview mais impossible de trouver le code pour la deuxieme colonnes ainsi que les autres.

    Est il possible également d'avoir la somme de la colonne currency payment qui s'affiche dans la texte box totalexp.

    Merci pour votre aide.
    Fichiers attachés Fichiers attachés

  2. #2
    Expert éminent sénior
    Homme Profil pro
    aucune
    Inscrit en
    Septembre 2011
    Messages
    8 207
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : aucune

    Informations forums :
    Inscription : Septembre 2011
    Messages : 8 207
    Points : 14 362
    Points
    14 362
    Par défaut
    Bonjour,

    Modifie ton code comme suit (je n'ai rempli que la seconde colonne), je ne suuis pas sûr de ce qu'il faut mettre dans les autres.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    Private Sub CommandButtonAddexp_Click() 'Remplissage de listview avec les expenses
    With ListViewExpense
          With .ListItems 'premiere ligne
            .Add , , TextBoxReceiptdate.Value
          End With
          With .ListItems(1)
            .ListSubItems.Add , , ComboBoxGl.Value
          End With
    End With
    TextBoxReceiptdate.Value = Clear
    End Sub
    Il suffit d'ajouter autant de lignes :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    .ListSubItems.Add , , ComboBoxGl.Value
    que de colonnes à remplir.

    Est il possible également d'avoir la somme de la colonne currency payment qui s'affiche dans la texte box totalexp.
    Oui, fais un total dans une variable au fur et à mesure que tu remplis la listview ett mets ce total dans la textbox.

  3. #3
    Candidat au Club
    Homme Profil pro
    Inscrit en
    Mars 2013
    Messages
    14
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Mars 2013
    Messages : 14
    Points : 3
    Points
    3
    Par défaut
    Salut Daniel,

    Un grand merci pour ton aide. Je suis resté bloqué ts le weekend

    Pour l'ajout des valeurs ds la listview j'ai utilisé le code que tu m'a donné. Ça marche pour la première ligne. mais pour la deuxième ligne ça ne s'affiche pas.

    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
    Private Sub CommandButtonAddexp_Click() 
    With ListViewExpense
          With .ListItems 'premiere ligne
          .Add , , TextBoxReceiptdate.Value
          End With
          With .ListItems(1) ' les autre colonnes
            .ListSubItems.Add , , TextBoxGldesc.Value 
            .ListSubItems.Add , , TextBoxProjectcode.Value
            .ListSubItems.Add , , TextBoxBudget.Value
            .ListSubItems.Add , , TextBoxLcy.Value
            .ListSubItems.Add , , TextBoxexr.Value
            .ListSubItems.Add , , TextBoxAmount.Value 
            .ListSubItems.Add , , TextBoxComments.Value
            .ListSubItems.Add , , TextBoxComments.Value
          End With
    End With  
    TextBoxReceiptdate.Value = Clear
    TextBoxGldesc.Value = Clear
    TextBoxProjectcode.Value = Clear
    TextBoxBudget.Value = Clear
    TextBoxLcy.Value = Clear
    TextBoxexr.Value = Clear
    TextBoxAmount.Value = Clear
    TextBoxComments.Value = Clear
    End Sub
    Pour le total je ne comprends pas. Rigole pas en lisant mon message.

    "Oui, fais un total dans une variable au fur et à mesure que tu remplis la listview ett mets ce total dans la textbox."

    Faut ajouter cela dans un module ? du genre qqchose comme ca :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    Sub TextBoxTotalexp()
        Dim TextBoxTotalexp As Currency
        TextBoxTotalexp = Sum(ListViewExpense.ListSubItems(i))
    End Sub
    ???
    Merci pour ton aide.

  4. #4
    Expert éminent sénior
    Homme Profil pro
    aucune
    Inscrit en
    Septembre 2011
    Messages
    8 207
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : aucune

    Informations forums :
    Inscription : Septembre 2011
    Messages : 8 207
    Points : 14 362
    Points
    14 362
    Par défaut
    Je n'ai pas eu le temps de tester; en tête du module :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Public Ctr As Integer, Tot As Double
    en suite remplace la macro par :

    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
    Private Sub CommandButtonAddexp_Click() 'Remplissage de listview avec les expenses
    With ListViewExpense
          Tot = 0
          Ctr = 0
          With .ListItems 'premiere ligne
            .Add , , TextBoxReceiptdate.Value
          End With
          Ctr = Ctr + 1
          With .ListItems(Ctr)
            .ListSubItems.Add , , TextBoxGldesc.Value
            .ListSubItems.Add , , TextBoxProjectcode.Value
            .ListSubItems.Add , , TextBoxBudget.Value
            .ListSubItems.Add , , TextBoxLcy.Value
            .ListSubItems.Add , , TextBoxexr.Value
            .ListSubItems.Add , , TextBoxAmount.Value
            .ListSubItems.Add , , TextBoxComments.Value
            .ListSubItems.Add , , TextBoxComments.Value
            Tot = Tot + CDbl(TextBoxAmount)
            TextBoxTotalexp = Format(Tot, "#0.00")
          End With
    End With
    TextBoxReceiptdate.Value = Clear
    End Sub

  5. #5
    Candidat au Club
    Homme Profil pro
    Inscrit en
    Mars 2013
    Messages
    14
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Mars 2013
    Messages : 14
    Points : 3
    Points
    3
    Par défaut
    Salut Daniel,

    J'ai essayé le code fonctionne parfaitement pour la premiere ligne avec le total mais quand je passe une nouvelle saisie les données ne s'affiche pas dans la listview et le total est uniquement celui de la derniere saisie.

    J'ai rajouté un module aux userforms et placé ton premier code. Je nettoie également les formulaires avec le code a la fin ça pose peut etre un souci?

    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
    Private Sub CommandButtonAddexp_Click() 'Remplissage de listview avec les expenses
    With ListViewExpense
          Tot = 0
          Ctr = 0
          With .ListItems 'premiere ligne
            .Add , , TextBoxReceiptdate.Value
          End With
          Ctr = Ctr + 1
          With .ListItems(Ctr)
            .ListSubItems.Add , , TextBoxGldesc.Value
            .ListSubItems.Add , , TextBoxProjectcode.Value
            .ListSubItems.Add , , TextBoxBudget.Value
            .ListSubItems.Add , , TextBoxLcy.Value
            .ListSubItems.Add , , TextBoxexr.Value
            .ListSubItems.Add , , TextBoxAmount.Value
            .ListSubItems.Add , , TextBoxComments.Value
            Tot = Tot + CDbl(TextBoxAmount)
            TextBoxTotalexp = Format(Tot, "#0.00")
          End With
    End With  ' nettoie les cases pour nouvelles saisies
    TextBoxReceiptdate.Value = Clear
    TextBoxGldesc.Value = Clear
    TextBoxProjectcode.Value = Clear
    TextBoxBudget.Value = Clear
    TextBoxLcy.Value = Clear
    TextBoxexr.Value = Clear
    TextBoxAmount.Value = Clear
    TextBoxComments.Value = Clear
    End Sub

  6. #6
    Expert éminent sénior
    Homme Profil pro
    aucune
    Inscrit en
    Septembre 2011
    Messages
    8 207
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : aucune

    Informations forums :
    Inscription : Septembre 2011
    Messages : 8 207
    Points : 14 362
    Points
    14 362
    Par défaut
    Au temps pour moi; ça doit fonctionner mieux :

    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
    Private Sub UserForm_Initialize() ' c'est bien userform qui doit etre ecrit
    Tot = 0
    Ctr = 0
    ComboBoxCurrencypayment.RowSource = ("CURRENCY") 'definit les données pr la currency
    ComboBoxcurrencycashreceive.RowSource = ("CURRENCY")
    CheckBoxCashreceive = False
    FrameCashreceive.Visible = False
    CheckBoxManualledger = False
    TextBoxManualledger.Visible = False
    CheckBoxOrlcy = False
    FrameLcy.Visible = False
    With ListViewExpense
            'Définit le nombre de colonnes et Entêtes
            With .ColumnHeaders
                'Ajoute colonnes en spécifiant le nom de l'entête
                'et la largeur des colonnes
                .Add , , "Receipt date", 70
                .Add , , "GL Code Description", 100
                .Add , , "Project", 70
                .Add , , "Budget Line", 70
                .Add , , "Local Currency", 70
                .Add , , "Exchange Rate", 70
                .Add , , "Currency Payment", 90
                .Add , , "Comments", 200
            End With
        End With
        'Spécifie l'affichage en mode "Détails"
        ListViewExpense.View = lvwReport
    End Sub
    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
    Private Sub CommandButtonAddexp_Click() 'Remplissage de listview avec les expenses
    With ListViewExpense
          With .ListItems 'premiere ligne
            .Add , , TextBoxReceiptdate.Value
          End With
          Ctr = Ctr + 1
          With .ListItems(Ctr)
            .ListSubItems.Add , , TextBoxGldesc.Value
            .ListSubItems.Add , , TextBoxProjectcode.Value
            .ListSubItems.Add , , TextBoxBudget.Value
            .ListSubItems.Add , , TextBoxLcy.Value
            .ListSubItems.Add , , TextBoxexr.Value
            .ListSubItems.Add , , TextBoxAmount.Value
            .ListSubItems.Add , , TextBoxComments.Value
            .ListSubItems.Add , , TextBoxComments.Value
            Tot = Tot + CDbl(TextBoxAmount)
            TextBoxTotalexp = Format(Tot, "#0.00")
          End With
    End With
    TextBoxReceiptdate.Value = Clear
    End Sub

  7. #7
    Candidat au Club
    Homme Profil pro
    Inscrit en
    Mars 2013
    Messages
    14
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Mars 2013
    Messages : 14
    Points : 3
    Points
    3
    Par défaut
    Salut Daniel,

    Parfait tous fonctionne correctement.

    Merci.

  8. #8
    Candidat au Club
    Homme Profil pro
    Inscrit en
    Mars 2013
    Messages
    14
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Mars 2013
    Messages : 14
    Points : 3
    Points
    3
    Par défaut
    Re Daniel,

    J'ai encore une question...

    Pour afficher ensuite les résultats dans la feuille de la listview. C'est possible de tous afficher sur la premiere ligne qui est vide meme le titre des colonnes et les valeurs ?

    J'ai essayé comme ca mais ca décalle tous et les resultats tombe pas au bonne endroit !! j'imagine qu'il y a un moyen plus efficace peut etre.

    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
    Private Sub CommandButtonok2_Click() 'affiche les valeurs dans excel
    Range("A65536").End(xlUp).Offset(3, 0) = "Destination"
    Range("A65536").End(xlUp).Offset(1, 0) = "Business purpose"
    Range("B65536").End(xlUp).Offset(3, 0) = TextBoxDestination.Value
    Range("B65536").End(xlUp).Offset(1, 0) = TextBoxBusinessporpose.Value
    Range("A65536").End(xlUp).Offset(2, 0) = "Receipt Date"
    Range("B65536").End(xlUp).Offset(2, 0) = "General Ledger Code"
    Range("C65536").End(xlUp).Offset(7, 0) = "General Ledger Description"
    Range("D65536").End(xlUp).Offset(7, 0) = "Project Code"
    Range("E65536").End(xlUp).Offset(7, 0) = "Budget Line"
    Range("F65536").End(xlUp).Offset(7, 0) = "Local Currency Amount"
    Range("G65536").End(xlUp).Offset(7, 0) = "Exchange Rate"
    Range("H65536").End(xlUp).Offset(7, 0) = "Amount"
    Range("I65536").End(xlUp).Offset(7, 0) = "Comments"
    Dim i As Integer, j As Integer
        'Boucle sur toutes les lignes
        For i = 1 To ListViewExpense.ListItems.Count
            Cells(i, 1) = ListViewExpense.ListItems(i).Text
            'Boucle sur les colonnes
            For j = 1 To ListViewExpense.ColumnHeaders.Count - 1
                Cells(i, j + 1) = ListViewExpense.ListItems(i).ListSubItems(j).Text
            Next j
        Next i
    UserFormBusinesstrip.Hide
    Unload UserFormBusinesstrip
    End Sub

  9. #9
    Expert éminent sénior
    Homme Profil pro
    aucune
    Inscrit en
    Septembre 2011
    Messages
    8 207
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : aucune

    Informations forums :
    Inscription : Septembre 2011
    Messages : 8 207
    Points : 14 362
    Points
    14 362
    Par défaut
    Bonjour,

    J'ai du mal à concevoir le résultat voulu. Peux-tu mettre en PJ une feuille avec le résultat souhaité ?

  10. #10
    Candidat au Club
    Homme Profil pro
    Inscrit en
    Mars 2013
    Messages
    14
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Mars 2013
    Messages : 14
    Points : 3
    Points
    3
    Par défaut
    Salut Daniel,

    Voici la piece jointe et mes commentaires dans la feuil1 (2).

    Encore merci pr l aide.
    Fichiers attachés Fichiers attachés

  11. #11
    Expert éminent sénior
    Homme Profil pro
    aucune
    Inscrit en
    Septembre 2011
    Messages
    8 207
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : aucune

    Informations forums :
    Inscription : Septembre 2011
    Messages : 8 207
    Points : 14 362
    Points
    14 362
    Par défaut
    Commentaire préliminaire. Tu fais une manip anormale ? j'ai reçu deux mails (hier et aujourd'hui) me prévenant que tu avais posté, mais quand je clique sur le lien, je tombe sur un message comme quoi le site est en cours de maintenance.

  12. #12
    Candidat au Club
    Homme Profil pro
    Inscrit en
    Mars 2013
    Messages
    14
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Mars 2013
    Messages : 14
    Points : 3
    Points
    3
    Par défaut
    C'est peut etre car j'avais mis le post en résolu un peut tot méaculpa !

    Salut Daniel,

    T'as eu le tps de regarder mon fichier ?

    Merci

  13. #13
    Expert éminent sénior
    Homme Profil pro
    aucune
    Inscrit en
    Septembre 2011
    Messages
    8 207
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : aucune

    Informations forums :
    Inscription : Septembre 2011
    Messages : 8 207
    Points : 14 362
    Points
    14 362
    Par défaut
    Je n'y comprends rien; en fait,, oui, je t'ai répondu et la réponse n'apparaît pas. Je t'ai retourné le classeur en te disant qu'il te restait à ajouter les totaux ("total", "Cash advance", "remaining") et les encadrements. Je te demandais si tu pouvais terminer, parce que j'étais pas mal occupé...
    Je te retourne le classeur en PJ. Les résultats sont sur Feuil2. La macro du bouton "OK" :

    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
    Private Sub CommandButtonok2_Click() 'affiche les valeurs dans excel
    Dim Ligne As Long, C As Range
    With Sheets("Feuil2")
        Set C = .[G:G].Find("REMAINING", , , xlWhole, xlByRows, xlPrevious)
        If C Is Nothing Then
            Ligne = 5
        Else
            Ligne = C.Row + 3
        End If
        .Cells(Ligne, 1) = "Destination"
        .Cells(Ligne, 2) = TextBoxDestination.Value
        Ligne = Ligne + 1
        .Cells(Ligne, 1) = "Business purpose"
        .Cells(Ligne, 2) = TextBoxBusinessporpose.Value
        Ligne = Ligne + 2
        .Cells(Ligne, 1) = "Receipt Date"
        .Cells(Ligne, 2) = "General Ledger Code"
        .Cells(Ligne, 3) = "General Ledger Description"
        .Cells(Ligne, 4) = "Project Code"
        .Cells(Ligne, 5) = "Budget Line"
        .Cells(Ligne, 6) = "Local Currency Amount"
        .Cells(Ligne, 7) = "Exchange Rate"
        .Cells(Ligne, 8) = "Amount"
        .Cells(Ligne, 9) = "Comments"
        Dim i As Integer, j As Integer
            'Boucle sur toutes les lignes
            For i = 1 To ListViewExpense.ListItems.Count
                Ligne = Ligne + 1
                Cells(Ligne, 1) = ListViewExpense.ListItems(i).Text
                'Boucle sur les colonnes
                For j = 1 To ListViewExpense.ColumnHeaders.Count - 1
                    Cells(Ligne, j + 1) = ListViewExpense.ListItems(i).ListSubItems(j).Text
                Next j
            Next i
        UserFormBusinesstrip.Hide
        Unload UserFormBusinesstrip
    End With
    End Sub
    Fichiers attachés Fichiers attachés

  14. #14
    Candidat au Club
    Homme Profil pro
    Inscrit en
    Mars 2013
    Messages
    14
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Mars 2013
    Messages : 14
    Points : 3
    Points
    3
    Par défaut
    Slt Daniel,

    Le seul souci c'est que si je renouvelle le userform les données sont écrasées par les dernieres données saisies.

    Je souhaite conservés les saisies et décaller les resultats en dessous.

  15. #15
    Expert éminent sénior
    Homme Profil pro
    aucune
    Inscrit en
    Septembre 2011
    Messages
    8 207
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : aucune

    Informations forums :
    Inscription : Septembre 2011
    Messages : 8 207
    Points : 14 362
    Points
    14 362
    Par défaut
    Je vérifie, mais de mémoire, j'avais testé ce cas.

    Tu as raison (et moi aussi). Pour savoir où écrire la seconde fois, je recherche le dernier "remaining" en colonne G et j'ajoute 3 lignes. Comme cette partie du code n'est pas faite, il faut positionner "REMAINING" en colonne G manuellement entre deux userforms.

  16. #16
    Candidat au Club
    Homme Profil pro
    Inscrit en
    Mars 2013
    Messages
    14
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Mars 2013
    Messages : 14
    Points : 3
    Points
    3
    Par défaut
    J'ai essayé avec ça.

    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
    Private Sub CommandButtonok2_Click() 'affiche les valeurs dans excel
    Dim Ligne As Long, C As Range
    With Sheets("Feuil1")
        Set C = .[G:G].Find("REMAINING", , , xlWhole, xlByRows, xlPrevious)
        If C Is Nothing Then
            Ligne = 5
        Else
            Ligne = C.Row + 3
        End If
        .Cells(Ligne, 1) = "Destination"
        .Cells(Ligne, 2) = TextBoxDestination.Value
        Ligne = Ligne + 1
        .Cells(Ligne, 1) = "Business purpose"
        .Cells(Ligne, 2) = TextBoxBusinessporpose.Value
        Ligne = Ligne + 2
        .Cells(Ligne, 1) = "Receipt Date"
        .Cells(Ligne, 2) = "General Ledger Code"
        .Cells(Ligne, 3) = "General Ledger Description"
        .Cells(Ligne, 4) = "Project Code"
        .Cells(Ligne, 5) = "Budget Line"
        .Cells(Ligne, 6) = "Local Currency Amount"
        .Cells(Ligne, 7) = "Exchange Rate"
        .Cells(Ligne, 8) = "Amount"
        .Cells(Ligne, 9) = "Comments"
        Dim i As Integer, j As Integer
            'Boucle sur toutes les lignes
            For i = 1 To ListViewExpense.ListItems.Count
                Ligne = Ligne + 1
                Cells(Ligne, 1) = ListViewExpense.ListItems(i).Text
                'Boucle sur les colonnes
                For j = 1 To ListViewExpense.ColumnHeaders.Count - 1
                    Cells(Ligne, j + 1) = ListViewExpense.ListItems(i).ListSubItems(j).Text
                Next j
            Next i
        Range("G65536").End(xlUp).Offset(1, 0) = LabelTotalexp
        Range("G65536").End(xlUp).Offset(1, 0) = LabelCash
        Range("G65536").End(xlUp).Offset(1, 0) = LabelRemaining
        Range("H65536").End(xlUp).Offset(1, 0) = TextBoxTotalexp.Value    UserFormBusinesstrip.Hide
        Unload UserFormBusinesstrip
    End With
    End Sub
    La colonne G peut etre vide et j'arrive pas a renvoyer en dessous de la derniere saisie de la listview. Pour les valeurs je pense que j'y arriverais car ca sera forcement en dessous du dernier montant saisie.

    Pour la nouvelle saisie donc ton code fait une recherche sur le texte REMAINING. Le souci également c'est que la aussi c'est deux infos "CASH ADVANCE" et "REMAINING" ne sont pas tous tjrs selectionnées et donc affichées aie:...

  17. #17
    Expert éminent sénior
    Homme Profil pro
    aucune
    Inscrit en
    Septembre 2011
    Messages
    8 207
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : aucune

    Informations forums :
    Inscription : Septembre 2011
    Messages : 8 207
    Points : 14 362
    Points
    14 362
    Par défaut
    Alors, on peut peut-être prendre la dernière valeur de la colonne H et ajouter 3 pour avoir le début de la saisie suivante ?

  18. #18
    Candidat au Club
    Homme Profil pro
    Inscrit en
    Mars 2013
    Messages
    14
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Mars 2013
    Messages : 14
    Points : 3
    Points
    3
    Par défaut
    Oui c'est exactement ce montant le dernier point de repere pour la nouvelle saisie.

    J'ai modifier le code a la fin et essayé de coder les totaux mais ca ne fonctionne pas faut que je declare des variables ? comme tu as fais pr le total ds la viewlist j'ai du mal !!

    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
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    Private Sub UserForm_Initialize() ' c'est bien userform qui doit etre ecrit
    Tot = 0 ' Pour les sommes de la viewlist et insertion des lignes
    Ctr = 0
    ComboBoxCurrencypayment.RowSource = ("CURRENCY") 'definit les données pr la currency
    ComboBoxCashcur.RowSource = ("CURRENCY")
    CheckBoxCashrec = False
    FrameCashreceive.Visible = False
    CheckBoxManualledger = False
    TextBoxManualledger.Visible = False
    CheckBoxOrlcy = False
    FrameLcy.Visible = False
    LabelCash.Visible = False
    TextBoxCash.Visible = False
    LabelRemaining.Visible = False
    TextBoxRemaining.Visible = False
    With ListViewExpense
            'Définit le nombre de colonnes et Entêtes
            With .ColumnHeaders
                'Ajoute colonnes en spécifiant le nom de l'entête
                'et la largeur des colonnes
                .Add , , "Receipt Date", 58
                .Add , , "GL Code", 55
                .Add , , "GL Code Description", 110
                .Add , , "Project Code", 58
                .Add , , "Budget Line", 58
                .Add , , "LCY Amount", 70
                .Add , , "X-Rate", 45
                .Add , , "Amount", 70
                .Add , , "Comments", 190
            End With
        End With
        'Spécifie l'affichage en mode "Détails"
        ListViewExpense.View = lvwReport
    End Sub
    Private Sub CheckBoxCashrec_Click()
    Dim TextBoxcashamount As Double
    Dim TextBoxRemaining As DoubleFrameCashreceive.Visible = CheckBoxCashrec = True
    LabelCash.Visible = CheckBoxCashrec = True
    TextBoxCash.Visible = CheckBoxCashrec = True
    LabelRemaining.Visible = CheckBoxCashrec = True
    TextBoxRemaining.Visible = CheckBoxCashrec = True
    TextBoxcashamount = CDbl(TextBoxAmount)
    TextBoxRemaining = TextBoxcashamount.Value - TextBoxTotalexp.ValueEnd Sub
    Private Sub CommandButtonAddexp_Click() 'Remplissage de listview avec les expenses
    With ListViewExpense
          With .ListItems 'premiere ligne
            .Add , , TextBoxReceiptdate.Value
          End With
          Ctr = Ctr + 1
          With .ListItems(Ctr)
            .ListSubItems.Add , , ComboBoxGl.Value
            .ListSubItems.Add , , TextBoxGldesc.Value
            .ListSubItems.Add , , TextBoxProjectcode.Value
            .ListSubItems.Add , , TextBoxBudget.Value
            .ListSubItems.Add , , TextBoxLcy.Value
            .ListSubItems.Add , , TextBoxexr.Value
            .ListSubItems.Add , , TextBoxAmount.Value
            .ListSubItems.Add , , TextBoxComments.Value
            Tot = Tot + CDbl(TextBoxAmount)
            TextBoxTotalexp = Format(Tot, "#0.00")
          End With
    End With  ' nettoie les cases pour nouvelles saisies
    TextBoxReceiptdate.Value = Clear
    TextBoxGldesc.Value = Clear
    TextBoxProjectcode.Value = Clear
    TextBoxBudget.Value = Clear
    TextBoxLcy.Value = Clear
    TextBoxexr.Value = Clear
    TextBoxAmount.Value = Clear
    TextBoxComments.Value = Clear
    ComboBoxGl.Value = Clear
    End Sub
    Private Sub CheckBoxManualledger_Click()
    TextBoxManualledger.Visible = CheckBoxManualledger = True
    End Sub
    Private Sub CheckBoxOrlcy_Click()
    FrameLcy.Visible = CheckBoxOrlcy = True
    End Sub
    Private Sub CommandButtonok2_Click() 'affiche les valeurs dans excel
    Dim Ligne As Long, C As Range
    With Sheets("Feuil1")
        Set C = .[G:G].Find("REMAINING", , , xlWhole, xlByRows, xlPrevious)
        If C Is Nothing Then
            Ligne = 5
        Else
            Ligne = C.Row + 3
        End If
        .Cells(Ligne, 1) = "Destination"
        .Cells(Ligne, 2) = TextBoxDestination.Value
        Ligne = Ligne + 1
        .Cells(Ligne, 1) = "Business purpose"
        .Cells(Ligne, 2) = TextBoxBusinessporpose.Value
        Ligne = Ligne + 2
        .Cells(Ligne, 1) = "Receipt Date"
        .Cells(Ligne, 2) = "General Ledger Code"
        .Cells(Ligne, 3) = "General Ledger Description"
        .Cells(Ligne, 4) = "Project Code"
        .Cells(Ligne, 5) = "Budget Line"
        .Cells(Ligne, 6) = "Local Currency Amount"
        .Cells(Ligne, 7) = "Exchange Rate"
        .Cells(Ligne, 8) = "Amount"
        .Cells(Ligne, 9) = "Comments"
        Dim i As Integer, j As Integer
            'Boucle sur toutes les lignes
            For i = 1 To ListViewExpense.ListItems.Count
                Ligne = Ligne + 1
                Cells(Ligne, 1) = ListViewExpense.ListItems(i).Text
                'Boucle sur les colonnes
                For j = 1 To ListViewExpense.ColumnHeaders.Count - 1
                    Cells(Ligne, j + 1) = ListViewExpense.ListItems(i).ListSubItems(j).Text
                Next j
            Next i
        Range("H65536").End(xlUp).Offset(1, 0) = TextBoxTotalexp.Value
        If CheckBoxCashrec = True Then Range("H65536").End(xlUp).Offset(1, 0) = TextBoxCash.Value
        If CheckBoxCashrec = True Then Range("H65536").End(xlUp).Offset(1, 0) = TextBoxRemaining.Value    UserFormBusinesstrip.Hide
        Unload UserFormBusinesstrip
    End With
    End Sub
    Heureusement que tu m'aides c'est pas évident au début !!

  19. #19
    Expert éminent sénior
    Homme Profil pro
    aucune
    Inscrit en
    Septembre 2011
    Messages
    8 207
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : aucune

    Informations forums :
    Inscription : Septembre 2011
    Messages : 8 207
    Points : 14 362
    Points
    14 362
    Par défaut
    Bonjour,

    Ça avance (grâce au verglas). J'ai néanmoins besoin de précisions :
    Dans la zone "Cash Details", que représente "Period" et "Currency" ? Que faire si la devise de l'avance est différente de la devise de paiement ? (comboboxes "Currency" et "Currency paiement") ?

  20. #20
    Candidat au Club
    Homme Profil pro
    Inscrit en
    Mars 2013
    Messages
    14
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Mars 2013
    Messages : 14
    Points : 3
    Points
    3
    Par défaut
    Salut Daniel,

    Voici les précisions demandées:

    Dans la zone "Cash Details", que représente "Period" et "Currency" ?

    - La period est une info date dont j'aurai besoin par la suite uniquement pour info. Pas d'impact sur les totaux et la viewlist. Pour la currency en faite c'est pas une drop list elle doit etre la meme que la currency payment.

    Que faire si la devise de l'avance est différente de la devise de paiement ? (comboboxes "Currency" et "Currency paiement") ?

    Ce qui répond a ta derniere question ca n'arrive pas toujours la meme.

+ Répondre à la discussion
Cette discussion est résolue.
Page 1 sur 2 12 DernièreDernière

Discussions similaires

  1. [VBA-E] erreur de compilation
    Par patbou dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 04/04/2007, 19h44
  2. [VBA] erreur compil si pas Outlook
    Par cbleas dans le forum Access
    Réponses: 2
    Dernier message: 25/08/2006, 15h34
  3. [VBA-A] erreur de compilation excel->access
    Par ashen dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 23/05/2006, 22h49
  4. [vba][Array]pb compile error
    Par megapacman dans le forum Access
    Réponses: 2
    Dernier message: 18/03/2006, 09h24
  5. [VBA-E] compilation VBE
    Par francois1955 dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 13/08/2005, 17h40

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