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 :

CommandButton avec plusieurs condition, et la fonction LastRow


Sujet :

Macros et VBA Excel

  1. #1
    Membre confirmé
    Homme Profil pro
    Inscrit en
    Décembre 2013
    Messages
    79
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Algérie

    Informations forums :
    Inscription : Décembre 2013
    Messages : 79
    Par défaut CommandButton avec plusieurs condition, et la fonction LastRow
    je tiens d'abord à vous remercier pour vos efforts

    le bouton rendu (CommandButton13) doit fonctionner avec 4 conditions, cliquez sur le bouton saisie dans la feuille Mouvementmatériels pour voir userform1 ----> CommandButton13 (rendu)
    Les lignes en rouge ne fonctionnent 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
    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
    Private Sub CommandButton13_Click()
    Dim LastRow As Range
    
    Dim Ligne
      Ligne = ListBox3.ListIndex
    
    'Msgbox Ok + Annuler
    Select Case MsgBox("Veuillez confirmer que le matériel est rendu", vbOKCancel, "Demande de confirmation")
        Case vbOK
            'procédure si click sur Ok
    
    If TextBox18.Text = ComboRef.Text And _
    TextBox17.Value <= 0 Then
    With MyRange
    Sheets("BDD").Range("c" & Me.ComboRef.ListIndex + 3) = Sheets("BDD").Range("c" & Me.ComboRef.ListIndex + 3) + Me.TextBox1.Value
    Sheets("Mouvementmatériels").Rows(Ligne + 3).EntireRow.Delete
    End With
    Unload Me
    UserForm1.Show
    End If
    
    If TextBox18.Text = ComboRef.Text And _
    TextBox17.Value > 0 Then
    With MyRange
    Sheets("BDD").Range("c" & Me.ComboRef.ListIndex + 3) = Sheets("BDD").Range("c" & Me.ComboRef.ListIndex + 3) + Me.TextBox1.Value
    Sheets("Mouvementmatériels").Range("b" & Me.ListBox3.ListIndex + 3) = Me.TextBox17.Value
    End With
    Unload Me
    UserForm1.Show
    End If
    
    If TextBox18.Text <> ComboRef.Text And _
    TextBox17.Value <= 0 Then
    Set LastRow = Sheets("BDD").Range("a65536").End(xlUp)
    LastRow.Offset(1, 0).Value = TextBox20.Text
    LastRow.Offset(1, 1).Value = Sheets("Mouvementmatériels").Range("a" & Me.ListBox3.ListIndex + 3)
    LastRow.Offset(1, 2).Value = TextBox17.Value
    LastRow.Offset(1, 3).Value = Sheets("Mouvementmatériels").Range("n" & Me.ListBox3.ListIndex + 3)
    LastRow.Offset(1, 4).Value = Sheets("Mouvementmatériels").Range("m" & Me.ListBox3.ListIndex + 3)
    With MyRange
    Sheets("Mouvementmatériels").Rows(Ligne + 3).EntireRow.Delete
    End With
    Unload Me
    UserForm1.Show
    End If
    
    If TextBox18.Text <> ComboRef.Text And _
    TextBox17.Value > 0 Then
    Set LastRow = Sheets("BDD").Range("a65536").End(xlUp)
    LastRow.Offset(1, 0).Value = TextBox20.Text
    LastRow.Offset(1, 1).Value = Sheets("Mouvementmatériels").Range("a" & Me.ListBox3.ListIndex + 3)
    LastRow.Offset(1, 2).Value = TextBox17.Value
    LastRow.Offset(1, 3).Value = Sheets("Mouvementmatériels").Range("n" & Me.ListBox3.ListIndex + 3)
    LastRow.Offset(1, 4).Value = Sheets("Mouvementmatériels").Range("m" & Me.ListBox3.ListIndex + 3)
    With MyRange
    Sheets("Mouvementmatériels").Range("b" & Me.ListBox3.ListIndex + 3) = Me.TextBox17.Value
    End With
    Unload Me
    UserForm1.Show
    End If
    
    Case vbCancel
            'procédure si click sur Annuler
      Exit Sub
    End Select
    
    End Sub
    merci et bonne continuation

  2. #2
    Expert confirmé Avatar de casefayere
    Homme Profil pro
    RETRAITE
    Inscrit en
    Décembre 2006
    Messages
    5 138
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 70
    Localisation : France, Ardennes (Champagne Ardenne)

    Informations professionnelles :
    Activité : RETRAITE
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Décembre 2006
    Messages : 5 138
    Par défaut
    Bonjour,
    sans regarder le reste, cette ligne
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Set LastRow = Sheets("BDD").Range("a65536").End(xlUp)
    écris-la comme ça
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Set LastRow = Sheets("BDD").Range("A" & Sheets("BDD").Rows.Count).End(xlUp)
    si ça ne passe pas, tu as certainement une erreur dans le nom de fichier (espaces en trop...)
    Cordialement,
    Dom
    _____________________________________________
    Vous êtes nouveau ? pour baliser votre code, cliquer sur cet exemple : Anomaly
    pensez à cliquer sur :resolu: si votre problème l'est
    Par contre, il est désagréable de voir une discussion résolue sans message final du demandeur (satisfaction, désarroi, remerciement, conclusion...)

  3. #3
    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
    Bonjour Nacereddine, bonjour le forum

    Ton bouton est grisé !... Pas envie de chercher dans le code comment obtenir le droit d'accès... Donne-nous l'explication pour le faire.

  4. #4
    Membre confirmé
    Homme Profil pro
    Inscrit en
    Décembre 2013
    Messages
    79
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Algérie

    Informations forums :
    Inscription : Décembre 2013
    Messages : 79
    Par défaut
    merci casefayere et Thautheme mais le code
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Set LastRow = Sheets("BDD").Range("A" & Sheets("BDD").Rows.Count).End(xlUp)
    remplie qu'une seul celule dans la colonne c.

    Pour le bouton griser il faut sélectionner d’abord un item dans listbox3 et cliquer sur SpinButton1

  5. #5
    Expert confirmé Avatar de casefayere
    Homme Profil pro
    RETRAITE
    Inscrit en
    Décembre 2006
    Messages
    5 138
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 70
    Localisation : France, Ardennes (Champagne Ardenne)

    Informations professionnelles :
    Activité : RETRAITE
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Décembre 2006
    Messages : 5 138
    Par défaut
    j'ai écris que je ne regardais que la syntaxe et celle que je propose est bonne, rien à voir avec le reste du code
    donc si je poursuis, cette ligne
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    LastRow.Offset(1, 0).Value = TextBox20.Text
    représente la première cellule vide en A
    celle-ci
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    LastRow.Offset(1, 1).Value = Sheets("Mouvementmatériels").Range("a" & Me.ListBox3.ListIndex + 3)
    en B
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    LastRow.Offset(1, 2).Value...
    LastRow.Offset(1, 2).Value.....
    LastRow.Offset(1, 2).Value...
    en C, D, E
    je n'ai toujours pas étudié le reste de ta procédure
    Cordialement,
    Dom
    _____________________________________________
    Vous êtes nouveau ? pour baliser votre code, cliquer sur cet exemple : Anomaly
    pensez à cliquer sur :resolu: si votre problème l'est
    Par contre, il est désagréable de voir une discussion résolue sans message final du demandeur (satisfaction, désarroi, remerciement, conclusion...)

  6. #6
    Membre confirmé
    Homme Profil pro
    Inscrit en
    Décembre 2013
    Messages
    79
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Algérie

    Informations forums :
    Inscription : Décembre 2013
    Messages : 79
    Par défaut
    oui c'est ce que j'ai écrit, mais malheureusement les données ne sent pas mis dans la feuille BDD comme je le veux

  7. #7
    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
    Bonjour le fil, bonjour le forum,

    Je n'ai pas compris ni l'intérêt ni l'utilisation de la variable MyRange !?
    Pour accéder au lignes en rouge il faut bidouiller avec les TextBoxes 17, 18 et la combobox ComboRef.
    Chez moi, quand les conditions sont remplies, je n'ai pas de bug. Le programme tourne sans problème ! Les lignes en rouge passent...
    J'ai juste rajouté Val(TextBox17.Value) à la place de TextBox17.Value dans les trois conditions.

  8. #8
    Membre confirmé
    Homme Profil pro
    Inscrit en
    Décembre 2013
    Messages
    79
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Algérie

    Informations forums :
    Inscription : Décembre 2013
    Messages : 79
    Par défaut
    c'était un code adapter, tu as raison, la variable MyRange n'a pas intérêt

    les lignes en rouge passent mais il y'a qu'une cellule remplie dans BDD C4 en l'occurrence la ligne
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    LastRow.Offset(1, 2).Value = TextBox17.Value
    les autre non

    le code en entier

    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
    Private Sub CommandButton13_Click()
    Dim LastRow As Range
     
    Dim Ligne
      Ligne = ListBox3.ListIndex
     
    'Msgbox Ok + Annuler
    Select Case MsgBox("Veuillez confirmer que le matériel est rendu", vbOKCancel, "Demande de confirmation")
        Case vbOK
            'procédure si click sur Ok
     
    If TextBox18.Text = ComboRef.Text And _
    TextBox17.Value <= 0 Then
    Sheets("BDD").Range("c" & Me.ComboRef.ListIndex + 3) = Sheets("BDD").Range("c" & Me.ComboRef.ListIndex + 3) + Me.TextBox1.Value
    Sheets("Mouvementmatériels").Rows(Ligne + 3).EntireRow.Delete
    Unload Me
    UserForm1.Show
    End If
     
    If TextBox18.Text = ComboRef.Text And _
    TextBox17.Value > 0 Then
    Sheets("BDD").Range("c" & Me.ComboRef.ListIndex + 3) = Sheets("BDD").Range("c" & Me.ComboRef.ListIndex + 3) + Me.TextBox1.Value
    Sheets("Mouvementmatériels").Range("b" & Me.ListBox3.ListIndex + 3) = Me.TextBox17.Value
    Unload Me
    UserForm1.Show
    End If
     
    If TextBox18.Text <> ComboRef.Text And _
    TextBox17.Value <= 0 Then
    Set LastRow = Sheets("BDD").Range("A" & Sheets("BDD").Rows.Count).End(xlUp)
    LastRow.Offset(1, 0).Value = TextBox20.Text
    LastRow.Offset(1, 1).Value = Sheets("Mouvementmatériels").Range("a" & Me.ListBox3.ListIndex + 3)
    LastRow.Offset(1, 2).Value = TextBox17.Value
    LastRow.Offset(1, 3).Value = Sheets("Mouvementmatériels").Range("n" & Me.ListBox3.ListIndex + 3)
    LastRow.Offset(1, 4).Value = Sheets("Mouvementmatériels").Range("m" & Me.ListBox3.ListIndex + 3)
    Sheets("Mouvementmatériels").Rows(Ligne + 3).EntireRow.Delete
    Unload Me
    UserForm1.Show
    End If
     
    If TextBox18.Text <> ComboRef.Text And _
    TextBox17.Value > 0 Then
    Set LastRow = Sheets("BDD").Range("A" & Sheets("BDD").Rows.Count).End(xlUp)
    LastRow.Offset(1, 0).Value = TextBox20.Text
    LastRow.Offset(1, 1).Value = Sheets("Mouvementmatériels").Range("a" & Me.ListBox3.ListIndex + 3)
    LastRow.Offset(1, 2).Value = TextBox17.Value
    LastRow.Offset(1, 3).Value = Sheets("Mouvementmatériels").Range("n" & Me.ListBox3.ListIndex + 3)
    LastRow.Offset(1, 4).Value = Sheets("Mouvementmatériels").Range("m" & Me.ListBox3.ListIndex + 3)
    Sheets("Mouvementmatériels").Range("b" & Me.ListBox3.ListIndex + 3) = Me.TextBox17.Value
    Unload Me
    UserForm1.Show
    End If
     
    Case vbCancel
            'procédure si click sur Annuler
      Exit Sub
    End Select
     
    End Sub

  9. #9
    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
    Bonjour le fil, bonjour le forum,

    Inutile de nous remettre le code que tu as déjà fourni dans le premier post...
    Fait tourner ta macro pas à pas (touche [F8]), vérifie la valeur des différentes cellules au moment de l'exécution !... Par exemple :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Sheets("Mouvementmatériels").Range("a" & Me.ListBox3.ListIndex + 3)
    Si ça ne se remplie pas c'est que ces cellules doivent être vides...

Discussions similaires

  1. Réponses: 2
    Dernier message: 26/03/2015, 11h29
  2. [XL-2007] fonction avec plusieurs conditions
    Par Antheadousa dans le forum Excel
    Réponses: 3
    Dernier message: 20/12/2012, 13h44
  3. [XL-2007] Fonction IF avec plusieurs condition
    Par grayfox1 dans le forum Macros et VBA Excel
    Réponses: 6
    Dernier message: 09/11/2010, 15h49
  4. [AC-2003] Fonction de moyenne pondéré avec plusieurs conditions
    Par Piccou dans le forum VBA Access
    Réponses: 34
    Dernier message: 14/08/2009, 13h07
  5. like avec plusieur condition
    Par wayak3 dans le forum MS SQL Server
    Réponses: 3
    Dernier message: 19/01/2007, 12h43

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