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 :

Ajouter des valeurs de Textbox suivant des conditions [XL-365]


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Homme Profil pro
    Ingenieur Securite
    Inscrit en
    Mai 2012
    Messages
    97
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Tarn (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingenieur Securite
    Secteur : Industrie

    Informations forums :
    Inscription : Mai 2012
    Messages : 97
    Par défaut Ajouter des valeurs de Textbox suivant des conditions
    Bonjour à toutes et tous,

    Dans un userform je récupère les valeurs de plusieurs lignes d'un tableau de plan d'actions (PA_IFE) pour les mettre à jour ci besoin.
    Lorsque je fais une modification dans une textbox et que je clique sur le bouton "CdButton_Update_AP" les valeurs modifiées doivent se reporter dans le tableau sur ligne correspondante.

    La particularité réside dans la modification du délais où là j'aimerais que soit reportée dans la colonne "Délais révisé" la date modifiée et le nom de l'auteur et la date de la modification dans la colonne "Auteur Délais Révisé".

    Mon code fonctionne très bien lorsque je modifie l'Action "TxtBox_Action", le Pilote "TxtBox_Pilote" ou la DI "TxtBox_Di".

    Par contre, lorsque je modifie ou pas le délais j'ai des incohérences qui se produisent, telles que l'image ci-dessous montre
    Nom : Capture-Résultat obtenu.JPG
Affichages : 302
Taille : 30,3 Ko

    Alors que je veut obtenir le résultat suivant
    Nom : Capture-Résultat voulu.JPG
Affichages : 271
Taille : 20,2 Ko
    A savoir que, lorsque je révise une Nème fois la date je doit pouvoir modifier (écraser) le délais révisé et conserver le nom de l'auteur et la date des autres modifications.

    Ci-dessous le code du bouton de mise à jour, les lignes concernées sont de 41 à 49
    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
    Private Sub CdButton_Update_AP_Click()
    '************************************************************************
    'Check filled textboxes and send the updated data to the PA_IFE
    '************************************************************************
    Application.ScreenUpdating = False
     
    '------------------------------------------------------------------------
    'Check the modification and make the updates onto the worksheet "Plan d'Actions IFE"
    '------------------------------------------------------------------------
        If CboBox_IFE_ID.Value <> "" Then
            Set Find_IFE = WsIFEAP.Range("PA_IFE[Réf. IFE]").Find(What:=CboBox_IFE_ID, LookIn:=xlValues, SearchOrder:=xlByRows)
                IFE = Find_IFE.Row
                count_IFE = Application.WorksheetFunction.CountIf(Range("PA_IFE[Réf. IFE]"), CboBox_IFE_ID)
        End If
     
        With Worksheets("Plan d'Actions IFE").Activate
            For j = 1 To count_IFE
                'Check that the required fields "Pilote" and "Délais" are filled
                If Me.Controls("TxtBox_Action" & j) <> "" And Me.Controls("TxtBox_Pilote" & j) = "" Or Me.Controls("TxtBox_Deadline" & j) = "" And WsIFEAP.Cells(IFE, 13) <> "" Then
                    MsgBox "Veuillez désigner un pilote et/ou définir un délais", vbExclamation + vbOKOnly
                    Exit Sub
                End If
     
                'When an action is modify
                If Me.Controls("TxtBox_Action" & j).Value <> Cells(IFE, 7) Then
                     Cells(IFE, 7) = Cells(IFE, 7) & vbNewLine & Me.Controls("TxtBox_Action" & j).Value & " (" & Label_User.Caption & " - " & CDate(Format(CStr(Date), "dd/mm/yyyy")) & ")"
                End If
     
                'When a DI is modify
                If Me.Controls("TxtBox_DI" & j).Value <> Cells(IFE, 8) Then
                    Cells(IFE, 8) = Me.Controls("TxtBox_DI" & j).Value
                End If
     
                'When a Pilote is modify
                If Me.Controls("TxtBox_Pilote" & j).Value <> Cells(IFE, 9) Then
                    Cells(IFE, 9) = Me.Controls("TxtBox_Pilote" & j).Value
                End If
     
                'Check if the date in the cell "Délais" changes and apply the new deadline date value in the column "Délais Révisé" with author name
                'and date of modification
                If Me.Controls("TxtBox_Deadline" & j).Value <> Cells(IFE, 10) And Cells(IFE, 11) = "" Then
                    Cells(IFE, 11) = CDate(Format(CStr(Me.Controls("TxtBox_Deadline" & j).Value), "dd/mm/yyyy"))
                    Cells(IFE, 12) = Label_User.Caption & " (" & CDate(Format(CStr(Date), "dd/mm/yyyy")) & ")"
                End If
     
                If Me.Controls("TxtBox_Deadline" & j).Value <> Cells(IFE, 10) And Cells(IFE, 11) <> "" Then
                    Cells(IFE, 11) = CDate(Format(CStr(Me.Controls("TxtBox_Deadline" & j).Value), "dd/mm/yyyy"))
                    Cells(IFE, 12) = Cells(IFE, 12) & vbNewLine & Label_User.Caption & " (" & CDate(Format(CStr(Date), "dd/mm/yyyy")) & ")"
                End If
     
            IFE = IFE + 1
            Next j
        End With
    Unload Me
    End Sub
    NB: Mes variables et worksheets sont déclarées dans Public de l'userform

    J'espère qu'avec mes explications et images vous comprendrez mon but et m'aiderez à solutionner mon problème.

  2. #2
    Invité
    Invité(e)
    Par défaut
    Citation Envoyé par pimpom81 Voir le message
    Bonjour,

    Pour faire cela, je m'aide d'une ListBox (multiselect) pour identifier les lignes qui doivent être mises à jour.

  3. #3
    Membre confirmé
    Homme Profil pro
    Ingenieur Securite
    Inscrit en
    Mai 2012
    Messages
    97
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Tarn (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingenieur Securite
    Secteur : Industrie

    Informations forums :
    Inscription : Mai 2012
    Messages : 97
    Par défaut
    Bonjour Eric,

    Veux-tu dire qu'il faille que je remplace mes Textbox "Délais" par de Listbox ?

    De plus dans l'expression des lignes 41 à 49 j'ai l'impression que le code boucle alors que c'est un événement conditionnel "If".

  4. #4
    Invité
    Invité(e)
    Par défaut
    Citation Envoyé par pimpom81 Voir le message
    Non, les textbox sont nécessaires que pour les modifications. Si j'ai bien compris, la ListBox devrait être alimentée par les lignes 41 à 49. La mise à jour des enregistrements devrait correspondre aux enregistrements sélectionnés dans la ListBox.

  5. #5
    Membre confirmé
    Homme Profil pro
    Ingenieur Securite
    Inscrit en
    Mai 2012
    Messages
    97
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Tarn (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingenieur Securite
    Secteur : Industrie

    Informations forums :
    Inscription : Mai 2012
    Messages : 97
    Par défaut
    Ne vaudrait-il pas mieux de faire une boucle du type "For Each" sur les textbox "Délais", afin de vérifier si la textbox change elle envoi les valeurs vers les cellules de destination?

  6. #6
    Membre confirmé
    Homme Profil pro
    Ingenieur Securite
    Inscrit en
    Mai 2012
    Messages
    97
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Tarn (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingenieur Securite
    Secteur : Industrie

    Informations forums :
    Inscription : Mai 2012
    Messages : 97
    Par défaut
    Problème résolu.

    Les formats des valeurs date étant différentes, faisait que la condition "If" était toujours fausse et donc exécutait le code.
    J'ai forcé la vérification sur le même format de date pour la textbox et la cellule ce qui fait que la condition "If" est vrai.

    ci dessous le code des lignes pour ceux qui serait intéressé.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
                'Check if the date in the cell "Délais" changes and apply the new deadline date value in the column "Délais Révisé" with author name
                'and date of modification
                If Format(CStr(Me.Controls("TxtBox_Deadline" & j).Value), "dd/mm/yyyy") <> Format(CStr(Cells(IFE, 10)), "dd/mm/yyyy") Then
                    If Cells(IFE, 11) <> "" Then
                        Cells(IFE, 11) = CDate(Format(CStr(Me.Controls("TxtBox_Deadline" & j).Value), "dd/mm/yyyy"))
                        Cells(IFE, 12) = Cells(IFE, 12) & vbNewLine & Label_User.Caption & " (" & CDate(Format(CStr(Date), "dd/mm/yyyy")) & ")"
                    ElseIf Cells(IFE, 11) = "" Then
                        Cells(IFE, 11) = CDate(Format(CStr(Me.Controls("TxtBox_Deadline" & j).Value), "dd/mm/yyyy"))
                        Cells(IFE, 12) = Label_User.Caption & " (" & CDate(Format(CStr(Date), "dd/mm/yyyy")) & ")"
                    End If
                End If
    Merci à ceux qui se sont penché dessus.

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

Discussions similaires

  1. [Débutant] Ajouter des valeurs d'un textbox dans un tableau
    Par Jazzili dans le forum Windows Forms
    Réponses: 1
    Dernier message: 16/02/2018, 08h30
  2. Réponses: 0
    Dernier message: 12/04/2015, 13h17
  3. Ajouter des conditions dans une expression
    Par ruru9 dans le forum QlikView
    Réponses: 2
    Dernier message: 16/12/2013, 12h40
  4. [XL-2007] fonction incomplete comment ajouter des conditions
    Par axou977 dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 06/12/2013, 16h00
  5. Ajouter des conditions IF/ ELSE dans mysql
    Par persia dans le forum Langage SQL
    Réponses: 13
    Dernier message: 10/05/2012, 17h04

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