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 :

Bouton "MODIFIER un contact" qui rajoute une ligne en cas de modif? [XL-2016]


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Eleveur caprin
    Inscrit en
    Juillet 2007
    Messages
    146
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Eleveur caprin

    Informations forums :
    Inscription : Juillet 2007
    Messages : 146
    Par défaut Bouton "MODIFIER un contact" qui rajoute une ligne en cas de modif?
    Bonjour,

    Si je peux abuser, j'aurai une autre question. Sur mon UserForm j'ai 3 boutons avec chacun leurs codes mais j'ai un soucis avec celui pour modifier un contact. Le contact est déjà enregistré mais si je veux faire une modification du contact, je commence par le rechercher via la ComboBox, je modifie, puis je valide la modif. Cependant, il me rajoute une ligne pour le client avec les modifs? 3 LIGNES PLUS HAUT.
    Comment faire pour que toutes les modifications restent sur la ligne du contact déjà existante? Qu'est ce que j'ai loupé? Voici les codes des 3 boutons.
    Nom : MODIF.png
Affichages : 92
Taille : 14,7 Ko

    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
    'Pour le bouton Nouveau contact à ajouter
     
    Private Sub CommandButton1_Click()
     
        Dim DernLig As Long
        Dim num As Integer
     
         If MsgBox("Confirmez-vous l'insertion de ce nouveau contact ?", vbYesNo, "Demande de confirmation d'ajout") = vbYes Then
         With Sheets("CLIENTS")
     
         'Pour placer le nouvel enregistrement à la première ligne de tableau non vide
         'pour donner un numero client correspondant à la valeur la plus grande de la colonne A (CODE)+1
       DernLig = .Range("A" & Rows.Count).End(xlUp).Row + 1
        .Range("A" & DernLig).Value = WorksheetFunction.Max(.Range("A2:A" & DernLig)) + 1
        .Range("B" & DernLig).Value = ComboBox1.Value   'nom entreprise
        .Range("C" & DernLig).Value = TextBox2.Value    'nom
        .Range("D" & DernLig).Value = TextBox3.Value    'prenom
        .Range("E" & DernLig).Value = TextBox4.Value    'adresse
        .Range("F" & DernLig).Value = TextBox5.Value    'cp
        .Range("G" & DernLig).Value = TextBox6.Value    'ville
        .Range("H" & DernLig).Value = TextBox7.Value    'telephone
        .Range("I" & DernLig).Value = TextBox8.Value    'email
     
         Unload UserForm1
     
      End With
        End If
     
    End Sub
     
    Private Sub CommandButton2_Click()
     
    'Bouton MODIFIER un client
     
    Dim modif As Integer
    If Not ComboBox1.Value = "" Then
    Sheets("CLIENTS").Select
    modif = ComboBox1.ListIndex
        Cells(modif, 1) = TextBox1.Value
        Cells(modif, 2) = ComboBox1.Value
        Cells(modif, 3) = TextBox2.Value
        Cells(modif, 4) = TextBox3.Value
        Cells(modif, 5) = TextBox4.Value
        Cells(modif, 6) = TextBox5.Value
        Cells(modif, 7) = TextBox6.Value
        Cells(modif, 8) = TextBox7.Value
        Cells(modif, 9) = TextBox8.Value
     
    MsgBox ("Modification effectuée")
    Else
    MsgBox ("Veuillez sélectionner le client à modifier")
    Exit Sub
    End If
     
    Unload UserForm1
    'UserForm1.Show 0
     
    End Sub
     
    Private Sub CommandButton3_Click()
    'Bouton rechercher
     
    If Not ComboBox1.Value = "" Then
    Dim no_ligne As Integer
     
    no_ligne = ComboBox1.ListIndex + 3
    TextBox1.Value = Cells(no_ligne, 1).Value
    ComboBox1.Value = Cells(no_ligne, 2).Value
    TextBox2.Value = Cells(no_ligne, 3).Value
    TextBox3.Value = Cells(no_ligne, 4).Value
    TextBox4.Value = Cells(no_ligne, 5).Value
    TextBox5.Value = Cells(no_ligne, 6).Value
    TextBox6.Value = Cells(no_ligne, 7).Value
    TextBox7.Value = Cells(no_ligne, 8).Value
    TextBox8.Value = Cells(no_ligne, 9).Value
     
    Else
    End If
     
    End Sub
    Merci par avance pour vos lumières et votre aide.

  2. #2
    Membre Expert
    Femme Profil pro
    Ingénieur
    Inscrit en
    Octobre 2016
    Messages
    1 703
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 30
    Localisation : France, Indre et Loire (Centre)

    Informations professionnelles :
    Activité : Ingénieur
    Secteur : Industrie

    Informations forums :
    Inscription : Octobre 2016
    Messages : 1 703
    Par défaut
    Bonjour,

    C'est la définition de ta variable modif qui ne va pas. Supposons que le client que tu veux modifier est le premier client. En faisant modif = ComboBox1.ListIndex, tu auras modif = 1, vu que le premier client est sur la première ligne de ta ComboBox. Ainsi Cells(modif, 1) correspond à la cellule A1 (ligne 1). Sauf que ton tableau commence à la ligne 3, donc tu es décalé de 2 lignes au-dessus.

    Pour avoir la bonne ligne, il faut que tu cherches le numéro de ton client dans ta base de données. Tu peux, par exemple, utiliser Find.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    modif = Sheets("CLIENTS").Range("B:B").Find(ComboBox1.Value).Row
    Cela te donne la ligne sur laquelle se trouve la valeur sélectionnée par ta ComboBox.

    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
    Private Sub CommandButton2_Click()
     
    'Bouton MODIFIER un client
     
    Dim modif As Integer
    If Not ComboBox1.Value = "" Then
     
        With Sheets("CLIENTS")
            modif = .Range("B:B").Find(ComboBox1.Value).Row
            .Cells(modif, 1) = TextBox1.Value
            .Cells(modif, 2) = ComboBox1.Value
            .Cells(modif, 3) = TextBox2.Value
            .Cells(modif, 4) = TextBox3.Value
            .Cells(modif, 5) = TextBox4.Value
            .Cells(modif, 6) = TextBox5.Value
            .Cells(modif, 7) = TextBox6.Value
            .Cells(modif, 8) = TextBox7.Value
            .Cells(modif, 9) = TextBox8.Value
        End With
     
        MsgBox ("Modification effectuée")
     
    Else
        MsgBox ("Veuillez sélectionner le client à modifier")
        Exit Sub
    End If
     
    Unload UserForm1
     
    End Sub

    EDIT : attention, tu as le même type d'erreur dans ton CommandButton3_Click. Je te laisse t'exercer là-dessus

  3. #3
    Membre confirmé
    Profil pro
    Eleveur caprin
    Inscrit en
    Juillet 2007
    Messages
    146
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Eleveur caprin

    Informations forums :
    Inscription : Juillet 2007
    Messages : 146
    Par défaut
    Bonjour,
    Merci à toi Riaolle, pour tes conseils, j'ai pu modifier mes boutons et tout marche nickel.

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

Discussions similaires

  1. [PB 10.5] Rajouter une ligne dans une bdd
    Par cagoule dans le forum Powerbuilder
    Réponses: 3
    Dernier message: 23/03/2007, 15h48
  2. Rajouter une ligne à un select
    Par kinglouis dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 02/11/2006, 15h10
  3. Réponses: 1
    Dernier message: 24/07/2006, 11h51
  4. Utilisateur qui insère une ligne
    Par Monstros Velu dans le forum MS SQL Server
    Réponses: 2
    Dernier message: 03/04/2006, 17h56
  5. [JTable] Modifier la couleur de fond d'une ligne
    Par joes_bushi dans le forum Composants
    Réponses: 2
    Dernier message: 20/09/2005, 12h13

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