Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

Jean-luc1311

XLDnaute Occasionnel
Bonjour à tous,

J'essaie de faire une mise à jour dans ma base de données "fournisseurs" par une ComboBox ouverte par le bouton "recherche contact".
La mise à jour s'effectue mais comme une nouvelle entrée et laisse l'ancienne dans la base.
J'ai besoin d'un coup de main afin de pouvoir corriger mon projet.
Merci à tout ceux qui pourraient me donner un coup de main.

Jean-luc
 

Pièces jointes

Re : MAJ données

Bonsoir Jean-luc1311,

Je t'envoie ton fichier modifié.

Description sommaire des modifs :

J'ai créé une variable drapeau, nommée MaJ, et qui aiguille le programme (par un select case dans le code du bouton valider) : si MaJ=False, alors on exécute ton programme d'enregistrement d'une nouvelle ligne, si MaJ=True, alors on modifie la ligne (LgNom) préalablement définie dans le Change de la listbox.

Code:
Option Explicit
[COLOR="RoyalBlue"][B]Public MaJ As Boolean
Public LgNom As Integer[/B][/COLOR]

Private Sub ListBoxContacts_Change()
    'si aucun contact n'est sélectionné dans la liste
    'Les boutons MAJ, OK et Suppression ne sont pas accessibles
    If ListBoxContacts.ListIndex = -1 Then
        CommandMAJ.Enabled = False
        CommandButtonOK.Enabled = False
        CommandButton_Supprime.Enabled = False
    'sinon ils sont accessibles
    Else
        CommandMAJ.Enabled = True
        CommandButtonOK.Enabled = True
        CommandButton_Supprime.Enabled = True
        [COLOR="RoyalBlue"][B]LgNom = ListBoxContacts.ListIndex + 2[/B][/COLOR]
    End If
End Sub

Private Sub CommandButton1_Click()
[COLOR="RoyalBlue"][B]Select Case MaJ
  Case True
   With Feuil2
    .Cells(LgNom, 1) = Societe.Value
    .Cells(LgNom, 2) = Nom.Value
    .Cells(LgNom, 3) = Prenom.Value
    .Cells(LgNom, 4) = Adresse.Value
    .Cells(LgNom, 5) = CP.Value
    .Cells(LgNom, 6) = Ville.Value
    .Cells(LgNom, 7) = Tel.Value
    .Cells(LgNom, 8) = Fax.Value
    .Cells(LgNom, 9) = Portable.Value
    .Cells(LgNom, 10) = Mail.Value
   End With
  Case False[/B][/COLOR]
    Sheets("Fournisseurs").Select
    Range("A2:J2").Select
    Selection.Insert Shift:=xlDown
    Selection.Interior.ColorIndex = xlNone
    Selection.Borders(xlDiagonalDown).LineStyle = xlNone
    Selection.Borders(xlDiagonalUp).LineStyle = xlNone
    Selection.Borders(xlEdgeLeft).LineStyle = xlNone
    Selection.Borders(xlEdgeTop).LineStyle = xlNone
    Selection.Borders(xlEdgeBottom).LineStyle = xlNone
    Selection.Borders(xlEdgeRight).LineStyle = xlNone
    Selection.Borders(xlInsideVertical).LineStyle = xlNone
    Selection.Borders(xlInsideHorizontal).LineStyle = xlNone
.......
End Sub

Espérant avoir répondu.

Cordialement.
 

Pièces jointes

Re : MAJ données

Bonjour à tous
Après avoir testé la solution de Papou-net, je suis tombé sur un problème auquel je ne trouve pas de solution viable.
- Lorsque je fais une nouvelle entrée, tout ce passe bien.
- Lorsque j'effectue une mise à jour, tout ce pase bien.
- Mais lorsque je veux effectuer une nouvelle entrée, elle vient écraser ma dernière mise à jour.

Merci à ceux qui pourront m'aider.
 

Pièces jointes

Re : MAJ données

Bonjour à tous
Après avoir testé la solution de Papou-net, je suis tombé sur un problème auquel je ne trouve pas de solution viable.
- Lorsque je fais une nouvelle entrée, tout ce passe bien.
- Lorsque j'effectue une mise à jour, tout ce pase bien.
- Mais lorsque je veux effectuer une nouvelle entrée, elle vient écraser ma dernière mise à jour.

Merci à ceux qui pourront m'aider.

Bonjour Jean-Luc, et bonne année,

En modifiant ton code comme suit, celà répond aux 3 points mentionnés sur ta feuille Menu.

Code:
Private Sub Pays_Change()
Dim val1 As Long
Dim col As String
Dim cellule As Range
If Pays.ListIndex = -1 Then Exit Sub
val1 = Pays.ListIndex + 2
With Sheets("Bases")
       col = Chr(val1 + 64)
       [COLOR="RoyalBlue"][B]DerniereCode = .Range(col & "2").End(xlDown).Address[/B][/COLOR]
       Code.RowSource = "Bases!B" & col & "2:" & DerniereCode
       Code.ListIndex = -1
       Code.Visible = True
End With
End Sub

Pour résoudre la question de ce fil, reprends le code de ton bouton Valider :

Code:
Private Sub CommandButton1_Click()
Select Case MaJ
  Case True
   With Feuil2
    .Cells(LgNom[COLOR="Blue"][B] + 1[/B][/COLOR], 1) = Societe.Value
    .Cells(LgNom[COLOR="Blue"][B] + 1[/B][/COLOR], 2) = Nom.Value
    .Cells(LgNom[COLOR="Blue"][B] + 1[/B][/COLOR], 3) = Prenom.Value
    .Cells(LgNom[COLOR="Blue"][B] + 1[/B][/COLOR], 4) = Adresse.Value
    ...
    ...
    .Cells(LgNom + 1, 10) = Mail.Value
    .Cells(LgNom[COLOR="Blue"][B] + 1[/B][/COLOR], 11) = Pays.Value
    .Cells(LgNom[COLOR="Blue"][B] + 1[/B][/COLOR], 12) = Code.Value
    Unload Entree_contact
    Unload FichFournisseur
    Sheets("Menu").Select
   End With
   ...

Espérant avoir répondu.

Cordialement.
 
Re : MAJ données

Problème:
J'ai appliqué tes modifs et le résultat est que je n'écrase plus ma ligne, mais j'ai un doublon maintenant.
Je m'explique, la donnée que je modifie vient se rajouter dans ma base tout en laissant l'ancienne.
Par contre ma nouvelle entrée vient ce rajouter à ma base correctement.
@+
 
Re : MAJ données

Bonsoir,

Cette version fonctionne bien.
Après modification pour faire la sélection pays/zone, le bug apparait.
Je joins le fichier en question.
Merci d'y jeter un oeil.
Bonne soirée.

Bonsoir Jean-Luc,

Je ne sais pas si j'ai bien compris le problème, mais après avoir testé ton fichier je n'ai décelé aucun bug.

Si ça persiste chez toi, peux-tu décrire dans le détails les actions qui te mènent au bug ?

Dans cette attente.

Cordialement.
 
Re : MAJ données

Bonsoir,

Quelle version d'Excel utilises-tu, pour ma part il s'agit Excel 2003.
J'ai fait un essai avec Excel 2007 et ça fonctionne.
Autant pour moi, aurais-tu un début d'explication pour ma culture personnelle?

Merci pour le temps que tu as consacré à m'aider.
 
Re : MAJ données

Bonsoir,

Quelle version d'Excel utilises-tu, pour ma part il s'agit Excel 2003.
J'ai fait un essai avec Excel 2007 et ça fonctionne.
Autant pour moi, aurais-tu un début d'explication pour ma culture personnelle?

Merci pour le temps que tu as consacré à m'aider.

Bonsoir,

J'utilise XL2003, comme indiqué en marge de mon pseudo. Je n'ai pas trouvé d'éléments de code qui seraient propres à XL2007, donc je suis incapable d'expliquer le pourquoi de la chose.
Mais si je t'ai bien compris, ça fonctionne maintenant pour toi, et j'en suis heureux.

Cordialement.
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

Réponses
4
Affichages
321
Réponses
12
Affichages
452
Retour