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 :

Problème de remplissage de feuille de calcul à partir d'un userform


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Juin 2008
    Messages
    31
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Juin 2008
    Messages : 31
    Par défaut Problème de remplissage de feuille de calcul à partir d'un userform
    Bonjour à tous et bonne année 2015

    J'ai un petit problème sur lequel je cale

    En effet, j'ai un userform qui me sert à valider des données.

    Une fois les vérifications effectuées, je recopie les contrôles de mon userform sur la première ligne libre d'une feuille de calcul.

    le reste des vérifs se trouvent dans le userform même

    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
     
    Private Sub validerarticle_Click()
    Dim j As Integer
    'vérifications si prix d'achat > 0
    If naprixachat > 0 Then
        'vérifications si pv1/2/3 ne sont pas vides
        If napv1 > 0 Then
            If napv2 > 0 Then
                If napv3 > 0 Then
                Else
                    MsgBox "Le prix de vente 3 ne peut être égal à 0"
                    napv3.SetFocus
                End If
            Else
                MsgBox "Le prix de vente 2 ne peut être égal à 0"
                napv2.SetFocus
            End If
        Else
            MsgBox "Le prix de vente 1 ne peut être égal à 0"
            napv1.SetFocus
        End If
    Else
        MsgBox "Le prix d'achat ne peut être égal à 0"
        naprixachat.SetFocus
    End If
    'MsgBox nacatégorie
    j = Workbooks("nouvelle_facture.xlsm").Worksheets("fencours").[A65000].End(xlUp).Row + 1
     
    Workbooks("nouvelle_facture.xlsm").Worksheets("fencours").Cells(j, 1) = nacodebarre.Value
    Workbooks("nouvelle_facture.xlsm").Worksheets("fencours").Cells(j, 2) = naquantité.Value
    Workbooks("nouvelle_facture.xlsm").Worksheets("fencours").Cells(j, 3) = nacatégorie.Value
    Workbooks("nouvelle_facture.xlsm").Worksheets("fencours").Cells(j, 4) = namarque.Value
    Workbooks("nouvelle_facture.xlsm").Worksheets("fencours").Cells(j, 5) = namodèle.Value
    Workbooks("nouvelle_facture.xlsm").Worksheets("fencours").Cells(j, 6) = naserialnumber.Value
    Workbooks("nouvelle_facture.xlsm").Worksheets("fencours").Cells(j, 7) = naprixachat.Value
    Workbooks("nouvelle_facture.xlsm").Worksheets("fencours").Cells(j, 8) = narecupel.Value
    Workbooks("nouvelle_facture.xlsm").Worksheets("fencours").Cells(j, 9) = nabebat.Value
    Workbooks("nouvelle_facture.xlsm").Worksheets("fencours").Cells(j, 10) = naauvibel.Value
    Workbooks("nouvelle_facture.xlsm").Worksheets("fencours").Cells(j, 11) = nareprobel.Value
    Workbooks("nouvelle_facture.xlsm").Worksheets("fencours").Cells(j, 12) = newfacture.grossiste
    Workbooks("nouvelle_facture.xlsm").Worksheets("fencours").Cells(j, 13) = newfacture.numfacture
    Workbooks("nouvelle_facture.xlsm").Worksheets("fencours").Cells(j, 14) = newfacture.datefacture
    Workbooks("nouvelle_facture.xlsm").Worksheets("fencours").Cells(j, 15) = nagarantie.Value
    Workbooks("nouvelle_facture.xlsm").Worksheets("fencours").Cells(j, 16) = nacodearticle.Value
    Workbooks("nouvelle_facture.xlsm").Worksheets("fencours").Cells(j, 17) = napv1.Value
    Workbooks("nouvelle_facture.xlsm").Worksheets("fencours").Cells(j, 18) = napv2.Value
    Workbooks("nouvelle_facture.xlsm").Worksheets("fencours").Cells(j, 19) = napv3.Value
    'newfacture.articlesrestants = newfacture.articlesrestants - naquantité
    Unload encodagearticles
    laRecherche.Show
    End Sub
    Les cellules se remplissent correctement sauf la colonne 3

    Je fais un MSGBOX juste avant et il m'affiche correctement la catégorie

    Parfois, c'est la colonne 4 qui ne se remplit pas

    A noter que je vois dans le userform la bonne valeur et que je ne la modifie même pas (listbox)

    j'ai essayé sans les .value et ça me donne la même chose (soit colonne 3 ou 4 qui ne se remplit pas)

    Parfois, dans le MSGBOX, j'ai un texte vide comme si je perdais la valeur du contrôle alors que je vois à l'écran

    qu'ai je loupé ?

    Merci d'avance

    update

    lors des 5 derniers tests, c'est toujours la colonne 4 qui ne se remplit pas

  2. #2
    Membre Expert Avatar de Thautheme
    Homme Profil pro
    salarié
    Inscrit en
    Août 2014
    Messages
    1 373
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 64
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : salarié

    Informations forums :
    Inscription : Août 2014
    Messages : 1 373
    Par défaut
    Bonsoir Five, bonsoir le forum,

    Ton code semble correct à part les vérifications faites sur > 0 au lieu de = 0. Que valent les contrôles nacatégorie et namarque quand tu cliques sur le bouton validerarticle ? Sans plus d'indications impossible de t'aider d'avantage !

    Ton code légèrement modifié :

    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
    Private Sub validerarticle_Click()
    Dim CD As Workbook
    Dim OD As Object
    Dim j As Integer
     
    If naprixachat = 0 Then
        MsgBox "Le prix d'achat ne peut être égal à 0"
        naprixachat.SetFocus
        Exit Sub
    End If
    If napv1 = 0 Then
        MsgBox "Le prix de vente 1 ne peut être égal à 0"
        napv1.SetFocus
        Exit Sub
    End If
    If napv2 = 0 Then
        MsgBox "Le prix de vente 2 ne peut être égal à 0"
        napv2.SetFocus
        Exit Sub
    End If
    If napv3 = 0 Then
        MsgBox "Le prix de vente 3 ne peut être égal à 0"
        napv3.SetFocus
        Exit Sub
    End If
    Set CD = Workbooks("nouvelle_facture.xlsm")
    Set OD = CD.Sheets("fencours")
    j = OD.Cells(Application.Rows.Count, 1).End(xlUp).Row + 1
     
    OD.Cells(j, 1) = nacodebarre.Value
    OD.Cells(j, 2) = naquantité.Value
    OD.Cells(j, 3) = nacatégorie.Value
    OD.Cells(j, 4) = namarque.Value
    OD.Cells(j, 5) = namodèle.Value
    OD.Cells(j, 6) = naserialnumber.Value
    OD.Cells(j, 7) = naprixachat.Value
    OD.Cells(j, 8) = narecupel.Value
    OD.Cells(j, 9) = nabebat.Value
    OD.Cells(j, 10) = naauvibel.Value
    OD.Cells(j, 11) = nareprobel.Value
    OD.Cells(j, 12) = newfacture.grossiste
    OD.Cells(j, 13) = newfacture.numfacture
    OD.Cells(j, 14) = newfacture.datefacture
    OD.Cells(j, 15) = nagarantie.Value
    OD.Cells(j, 16) = nacodearticle.Value
    OD.Cells(j, 17) = napv1.Value
    OD.Cells(j, 18) = napv2.Value
    OD.Cells(j, 19) = napv3.Value
    'newfacture.articlesrestants = newfacture.articlesrestants - naquantité
    Unload encodagearticles
    laRecherche.Show
    End Sub

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Juin 2008
    Messages
    31
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Juin 2008
    Messages : 31
    Par défaut
    Bonjour,

    Je vais essayer ta solution.

    nacategorie contient "SOURIS WIRELESS"
    namarque contient "TRUST"

    Bonne journée

    update
    résultat identique, manque la marque (colonne 4)
    J'ai changé le nom du contrôle au cas où, mais ça ne change rien.

    update2
    autre essai :
    un msgbox en début de procédure et juste avant l'écriture dans la feuille
    le résultat s'affiche et il est écrit dans la feuille ... mais c'est la colonne 3 qui manque ce coup là

  4. #4
    Rédacteur
    Avatar de Philippe Tulliez
    Homme Profil pro
    Formateur, développeur et consultant Excel, Access, Word et VBA
    Inscrit en
    Janvier 2010
    Messages
    13 176
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Formateur, développeur et consultant Excel, Access, Word et VBA

    Informations forums :
    Inscription : Janvier 2010
    Messages : 13 176
    Billets dans le blog
    53
    Par défaut
    Bonjour,
    N'aurais-tu pas par hasard un contrôle ListBox ou ComboBox dans ton UserForm dont la valeur de la propriété ListIndex est différente de -1 ?
    Je te conseille d'utiliser le débogage au pas à pas (Touche F8) en plaçant le point d'arrêt (touche F9) sur la première ligne de ta procédure.
    Philippe Tulliez
    Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément. (Nicolas Boileau)
    Lorsque vous avez la réponse à votre question, n'oubliez pas de cliquer sur et si celle-ci est pertinente pensez à voter
    Mes tutoriels : Utilisation de l'assistant « Insertion de fonction », Les filtres avancés ou élaborés dans Excel
    Mon dernier billet : Utilisation de la fonction Dir en VBA pour vérifier l'existence d'un fichier

  5. #5
    Membre averti
    Profil pro
    Inscrit en
    Juin 2008
    Messages
    31
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Juin 2008
    Messages : 31
    Par défaut
    Bonjour,
    Après de nombreux essais, j'ai changé mon fusil d'épaule :
    j'ai fait une copie de mon userform et j'ai remplacé les listbox par des textbox
    et dans ce cas, ça fonctionne correctement

    Je vais néanmoins regarder votre proposition car j'aime bien savoir ce qui se passe.

    Merci de votre collaboration

  6. #6
    Rédacteur
    Avatar de Philippe Tulliez
    Homme Profil pro
    Formateur, développeur et consultant Excel, Access, Word et VBA
    Inscrit en
    Janvier 2010
    Messages
    13 176
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Formateur, développeur et consultant Excel, Access, Word et VBA

    Informations forums :
    Inscription : Janvier 2010
    Messages : 13 176
    Billets dans le blog
    53
    Par défaut
    Bonjour,
    Si la valeur d'une propriété ListIndex d'un ComboBox ou d'un ListBox est différente de -1 cela peut provoquer une procédure événementielle sur le Click notamment et sans doute a provoqué une relecture de l'enregistrement courant avant sa mise à jour.
    Philippe Tulliez
    Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément. (Nicolas Boileau)
    Lorsque vous avez la réponse à votre question, n'oubliez pas de cliquer sur et si celle-ci est pertinente pensez à voter
    Mes tutoriels : Utilisation de l'assistant « Insertion de fonction », Les filtres avancés ou élaborés dans Excel
    Mon dernier billet : Utilisation de la fonction Dir en VBA pour vérifier l'existence d'un fichier

Discussions similaires

  1. [XL-2007] problème de partage de feuille de calcul
    Par lebub dans le forum Excel
    Réponses: 0
    Dernier message: 06/11/2013, 20h01
  2. affichage de dates sur une feuille de calcul à partir d'un tableau VBA
    Par adourlot dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 23/11/2012, 21h59
  3. [XL-2007] Mettre à jour une feuille de calcul à partir d'une autre.
    Par ziad.shady dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 06/01/2010, 18h24
  4. problème : aperçu de la feuille de calcul
    Par jetset30 dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 08/02/2009, 20h30
  5. problème pour lire une feuille excel a partir d'Access
    Par h_adil dans le forum VBA Access
    Réponses: 1
    Dernier message: 17/07/2008, 23h44

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