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 modification d'un enregistrement à 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 confirmé
    Homme Profil pro
    Logisticien
    Inscrit en
    Avril 2016
    Messages
    70
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Cameroun

    Informations professionnelles :
    Activité : Logisticien
    Secteur : Associations - ONG

    Informations forums :
    Inscription : Avril 2016
    Messages : 70
    Par défaut Problème de modification d'un enregistrement à partir d'un UserForm
    Salut !
    J'ai crée un formulaire d'ajout d'enregistrement pour la gestion du personnel et comme de coutume il a fallut que je cree également une pour la modification
    Mais celui-ci ne fonctionne pas lorsque j'effectue une modification et que je clique pour valider. Par contre les changements ne s'opèrent que sur une seule ligne
    peu importe le code que j'ai sélectionné dans la combobox.J'ai trouvé plusieurs codes similaire sur le forum que j'ai adapté mais rien. je laisse ces ligne de code
    si quelqu'un peut me débloquer. Merci d'avance

    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
    Private Sub CommandButton11_Click()
    Dim linsuiv As Integer, i as integer
     
    linsuiv = ComboBox4.ListIndex + 4
    linsuiv = ComboBox4.ListCount
     
    i = Sheets("G° HORAIRE").Cells(Rows.Count, 1).End(xlUp).Row + 1
    If ComboBox4.Value = "" Then
        MsgBox ("veuillez sélectionner un Matricule!")
    Else
        Cells(linsuiv, 4) = TextBox2.Value
        Cells(linsuiv, 5) = TextBox3.Value
        Cells(linsuiv, 6) = ComboBox1.Value
        Cells(linsuiv, 7) = TextBox5.Value
        Cells(linsuiv, 8) = ComboBox2.Value
        Cells(linsuiv, 9) = ComboBox3.Value
        Cells(linsuiv, 10) = TextBox8.Value
        Cells(linsuiv, 11) = TextBox9.Value
        Cells(linsuiv, 12) = TextBox10.Value
        Cells(linsuiv, 13) = TextBox12.Value
        Cells(linsuiv, 14) = TextBox11.Value
    End If
    'Next i
        'Me.ComboBox4 = ""
        'Me.TextBox2 = ""
        'Me.TextBox3 = ""
        'Me.ComboBox1 = ""
        'Me.TextBox5 = ""
        'Me.ComboBox2 = ""
        'Me.ComboBox3 = ""
        'Me.TextBox8 = ""
        'Me.TextBox9 = ""
        'Me.TextBox10 = ""
        'Me.TextBox11 = ""
        'Me.TextBox12 = ""
    End Sub
    Cordialement

  2. #2
    Membre émérite
    Avatar de eric4459
    Homme Profil pro
    Ingénieur Gestion de Projets
    Inscrit en
    Avril 2014
    Messages
    605
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Alpes de Haute Provence (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Ingénieur Gestion de Projets
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2014
    Messages : 605
    Par défaut
    Bonjour,

    Essayes déjà choisir entre tes variables et quelle valeur lui attribuer

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    linsuiv = ComboBox4.ListIndex + 4
    linsuiv = ComboBox4.ListCount
    i= Sheets("G° HORAIRE").Cells(Rows.Count, 1).End(xlUp).Row + 1
    S'agit-il de travailler sur la liste qui alimente ton ComboBox? ou sur le nombre de ligne de ta feuille "G° HORAIRE"?

    Ensuite il faudrait une boucle pour travailler sur toutes tes lignes comme par exemple

    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
    Dim NbLigne as Integer
    NbLigne= Sheets("G° HORAIRE").Cells(Rows.Count, 1).End(xlUp).Row + 1
     
    For i=0 NbLigne
    If ComboBox4.Value = "" Then
        MsgBox ("veuillez sélectionner un Matricule!")
    Else
        Cells(i, 4) = TextBox2.Value
        Cells(i, 5) = TextBox3.Value
        Cells(i, 6) = ComboBox1.Value
        Cells(i, 7) = TextBox5.Value
        Cells(i, 8) = ComboBox2.Value
        Cells(i, 9) = ComboBox3.Value
        Cells(i, 10) = TextBox8.Value
        Cells(i, 11) = TextBox9.Value
        Cells(i, 12) = TextBox10.Value
        Cells(i, 13) = TextBox12.Value
        Cells(i, 14) = TextBox11.Value
    End If
    Next i
    Eric
    "Vous n’avez cessé d’essayer ? Vous n’avez cessé d’échouer ? Aucune importance !
    Réessayez, échouez encore, échouez mieux." Samuel Beckett
    Pensez aux balises et
    Visitez les FAQ Excel et allez faire un tour ici
    Tutoriels de SilkyRoad

  3. #3
    Expert confirmé
    Homme Profil pro
    aucune
    Inscrit en
    Avril 2016
    Messages
    7 563
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 84
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : aucune

    Informations forums :
    Inscription : Avril 2016
    Messages : 7 563
    Par défaut
    Bonjour
    Quand je lis :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    linsuiv = ComboBox4.ListIndex + 4
    linsuiv = ComboBox4.ListCount
    je me pose déjà beaucoup de questions.

  4. #4
    Expert confirmé
    Homme Profil pro
    aucune
    Inscrit en
    Avril 2016
    Messages
    7 563
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 84
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : aucune

    Informations forums :
    Inscription : Avril 2016
    Messages : 7 563
    Par défaut
    Allons bon. J'espère que tu as compris le sens de mon message précédent (la propriété Listcount est fixe. Or c'est elle que tu choisis finalement !)
    - supprime cette seconde ligne
    Et agilise ton code ainsi :
    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
    Dim linsuiv As Integer, y as integer
    If ComboBox4.listindex = -1 Then
        MsgBox ("veuillez sélectionner un Matricule!")
    Else
        linsuiv = ComboBox4.ListIndex + 4
        for y = 4 to 14
      select case y
          case 4,5,7,10,11,
            Cells(linsuiv, y) = me.controls("TextBox" & y-2).Value
          case 13
             Cells(linsuiv, y) = TextBox12.Value
          case 14
             Cells(linsuiv, y) = TextBox11.Value
          case 8,9
            Cells(linsuiv, y) = me.controls("ComboBox" & y-6).Value 
          end select
     End If
    Ce qui pourrait d'ailleurs s'écrire également ainsi : ( à main levée. Non testé)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    Dim linsuiv As Integer, y as integer
    If ComboBox4.listindex = -1 Then
        MsgBox ("veuillez sélectionner un Matricule!")
    Else
        linsuiv = ComboBox4.ListIndex + 4
        mescontrols = array(,,,,Textbox2,TextBox3,Combobox1,TextBox5,ComboBox2,ComboBox3, TextBox8,TextBox9,TextBox10,TextBox12,TextBox11)
        for y = 4 to 14
          Cells(linsuiv, y) $ mescontrols(y).value
        next
    end if

  5. #5
    Membre confirmé
    Homme Profil pro
    Logisticien
    Inscrit en
    Avril 2016
    Messages
    70
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Cameroun

    Informations professionnelles :
    Activité : Logisticien
    Secteur : Associations - ONG

    Informations forums :
    Inscription : Avril 2016
    Messages : 70
    Par défaut Problème de modification d'un enregistrement à partir d'un UserForm
    Merci bien pour ton aide mais à force de creser j'ai finalement trouvé le problème.
    J'ai modifié le code et ça donne ceci. ça peut etre utile

    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
    linsuiv = Sheets("G° HORAIRE").Range("C1048576").End(xlUp).Row + 1
    r = MsgBox("Confirmez-vous cette modification ?", vbYesNo, "Validation")
    If r <> 11 Then Exit Sub
    For i = 1 To linsuiv 'i allant de 1 a la derniere ligne du tableau, tous les champs se charge en f° du contenu
    'de la cb
     
    While ComboBox4.Text = Cells(i, 3)
        Rows(i).Select
        Cells(i, 4) = TextBox2.Text
            Cells(i, 5) = TextBox3.Text
                Cells(i, 6) = ComboBox1.Text
                    Cells(i, 7) = TextBox5.Text
                        Cells(i, 8) = ComboBox2.Text
                        Cells(i, 9) = ComboBox3.Text
                        Cells(i, 10) = TextBox8.Text
                    Cells(i, 11) = TextBox9.Text
                Cells(i, 12) = TextBox10.Text
            Cells(i, 13) = TextBox12.Text
        Cells(i, 14) = TextBox11.Text
    i = i + 1
    Wend
    Next i
    'Mise à jour automatique des champs apres confirmation des modifications
        Me.ComboBox4.Text = ""
            TextBox2.Text = ""
                TextBox3.Text = ""
                    ComboBox1.Text = ""
                        TextBox5.Text = ""
                            ComboBox2.Text = ""
                            ComboBox3.Text = ""
                        TextBox8.Text = ""
                    TextBox9.Text = ""
                TextBox10.Text = ""
            TextBox12.Text = ""
        TextBox11.Text = ""
    End Sub
    Cordialement

  6. #6
    Membre confirmé
    Homme Profil pro
    Logisticien
    Inscrit en
    Avril 2016
    Messages
    70
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Cameroun

    Informations professionnelles :
    Activité : Logisticien
    Secteur : Associations - ONG

    Informations forums :
    Inscription : Avril 2016
    Messages : 70
    Par défaut Problème de modification d'un enregistrement à partir d'un UserForm
    Salut !
    Merci déjà pour cette proposition, avec l'utilisation de la propriété Array, mes lignes de codes sont simplifiés,
    avec les mêmes mais mon appli est plus agile.
    Merci encore de ton temps

Discussions similaires

  1. [XL-2010] Problème de remplissage de feuille de calcul à partir d'un userform
    Par five1966 dans le forum Macros et VBA Excel
    Réponses: 7
    Dernier message: 02/01/2015, 15h25
  2. [WD17] Problème de modification d'un enregistrement
    Par xGuigui78 dans le forum WinDev
    Réponses: 21
    Dernier message: 19/11/2012, 17h22
  3. Enregistrer des modifications dans une feuille à partir d'une autre
    Par chipster008 dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 11/04/2011, 09h58
  4. Réponses: 7
    Dernier message: 12/06/2009, 16h13
  5. Réponses: 3
    Dernier message: 21/07/2008, 16h15

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