Autres Aide concernant un code qui me met à jour ma base de données

  • Initiateur de la discussion Initiateur de la discussion INFINITY100
  • Date de début Date de début

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 !

INFINITY100

XLDnaute Occasionnel
Bonjour mes amis

Voila je viens vers vous pour résoudre un petit soucis de code VBA en effet dans mon fichier Excel j’ai deux feuilles une « base de données » et l’autre « modification »

Et je possède déjà un code que lorsque je saisie le matricule dans la cellule E4 et que je clique sur chercher il me récupère de ma base les informations concernant le matricule choisit.

Jusque-là tout est parfait.

Seulement il me manque un code qui met à jour ma base de données s’il y a un changement, c’est-à-dire lorsque je change quelque chose dans la feuille modification et que je clique sur "Mettre à jour" je veux automatiquement renvoyer les changements vers ma base de donnée et à la bonne ligne par rapport au matricule

Je joins le fichier pour y voir très claire

Merci à vous tous

Cordialement
 

Pièces jointes

Bonjour Infinity,
Un essai en PJ avec :
VB:
Sub CommandButton2_Click()
    If IsEmpty(Sheets("Modification").Range("E4")) Then Exit Sub
    Dim DL%, Ligne%, Colonne%, Matricule
    Application.ScreenUpdating = False
    Matricule = Sheets("Modification").[B9]
    With Sheets("Base")
        DL = 1 + .[B65500].End(xlUp).Row
        For Ligne = 2 To DL
            If .Cells(Ligne, "B") = Matricule Then
                Exit For
            End If
        Next Ligne
        For Colonne = 5 To 12   ' de la colonne E à L
            .Cells(Ligne, Colonne) = Sheets("Modification").Cells(9, Colonne)
        Next Colonne
    End With
End Sub
J'en ai profité pour mettre une liste déroulante en E4 avec :
Code:
=DECALER(ListeMat1;0;0;NB.SI(ListeMat;"<>"))
 

Pièces jointes

Re,
La boucle For Next est stupide, cette PJ fait appel à EQUIV, ce qui est beaucoup plus rapide si vous avez beaucoup de matricules :
VB:
Sub CommandButton2_Click()
    If IsEmpty(Sheets("Modification").Range("E4")) Then Exit Sub
    Dim DL%, Ligne%, Colonne%, Matricule
    Application.ScreenUpdating = False
    Matricule = Sheets("Modification").[B9]
    With Sheets("Base")
        On Error GoTo Fin
        Ligne = Application.Match(Matricule, .[B:B], 0)
        For Colonne = 5 To 12   ' de la colonne E à L
            .Cells(Ligne, Colonne) = Sheets("Modification").Cells(9, Colonne)
        Next Colonne
    End With
Fin:
End Sub
 

Pièces jointes

Bonjour dysorthographie,
Cela supposerait de modifier le code hôte pour mémoriser cette ligne en variable public.
Et donc ce module serait tributaire d'un code qui peut être sujet à modifications/évolutions. On pourrait alors arriver à un code qui ne marche plus à cause d'une évol d'un autre code.
Pour moi, plus les modules sont indépendant moins on risque d'effets de bord. Surtout si ce sont deux personnes différentes qui ont développés les deux modules.
 
Re,
La boucle For Next est stupide, cette PJ fait appel à EQUIV, ce qui est beaucoup plus rapide si vous avez beaucoup de matricules :
VB:
Sub CommandButton2_Click()
    If IsEmpty(Sheets("Modification").Range("E4")) Then Exit Sub
    Dim DL%, Ligne%, Colonne%, Matricule
    Application.ScreenUpdating = False
    Matricule = Sheets("Modification").[B9]
    With Sheets("Base")
        On Error GoTo Fin
        Ligne = Application.Match(Matricule, .[B:B], 0)
        For Colonne = 5 To 12   ' de la colonne E à L
            .Cells(Ligne, Colonne) = Sheets("Modification").Cells(9, Colonne)
        Next Colonne
    End With
Fin:
End Sub
Merci infiniment sylvanu c'est exactement le but voulu et aussi pour tout les détails
on apprend tellement avec vous

Merci encore
 
- 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
7
Affichages
280
Retour