XL 2010 SUPPRIMER LES LIGNES DE DEUX FEUILLES SIMULTANEMENT AVEC LE CODE

Eric kankonde

XLDnaute Nouveau
Bonjour à tous.
Voici mon fichier Excel ci-joint
Dans ce classeur, je peux facilement ajouter, modifier et supprimer dans ma base de données.
Si je veux supprimer, je supprime la ligne entière et ça marche parfaitement.
Mais ma difficulté ce que les données la feuille « agents » dépendent des données de la feuille « source ». Je veux, à chaque fois que je supprime une ligne quelconque dans la feuille « source » , le numéro de la ligne identique est supprimé dans la feuille « agents » (ex : si je supprimer la ligne du matricule « 5 » qui se trouve dans A6 de la feuille « source » , la ligne du matricule « 5 » qui se trouve dans A6 de la feuille « agents » est supprimée automatiquement.
Quelqu’un peut-il m’aider svp ???
 

Pièces jointes

  • gestion BDD.xlsm
    40.5 KB · Affichages: 5

Robert

XLDnaute Barbatruc
Repose en paix
Bonjour Éric, bonjour le forum,

Essaie comme ça :

VB:
Sub supprimesalarie2()
Dim OS As Worksheet 'déclare la variable OS (Onglet Source)
Dim OA As Worksheet 'déclare la variable OA (Onglet Agents)
Dim TV As Variant 'déclare la variable TV (Tableau des Valeurs)
Dim SL As Variant 'déclare la variable SL (Suppression Ligne)
Dim I As Integer 'déclare la variable I (Incrément)
Dim LI As Integer 'déclare la variable LI (Ligne)

Set OS = Worksheets("source") 'définit l'onglet source OS
TV = OS.Range("A1").CurrentRegion 'définit le tableau des valeurs TV
Set OA = Worksheets("agents") 'définit l'onglet OA
ici: 'étiquette
'définit la boîte d'entrée SL
SL = Application.InputBox("Veuillez saisir le numéro du salarié à supprimer", "SUPPRESSION", Type:=1)
If SL = False Then Exit Sub 'si bouton [Annuler], sort de la procédure
If SL < 1 Then 'condition : si SL est négative
    MsgBox "Donnée non valide !" 'message
    GoTo ici 'va à l'étiquette "ici"
End If 'fin de la condition
For I = 2 To UBound(TV, 1) 'boucle sur toutes les lignes I du tableau des valeurs (en partant de la seconde)
    'si la donnée ligne I colonne 1 de TV, est égale à SL (les deux converties en texte), définit la ligne LI, sort de la boucle
    If CStr(TV(I, 1) = CStr(SL)) Then LI = I: Exit For
Next I 'prochaine ligne de la boucle
OS.Rows(LI).Delete 'supprime la ligne LI de l'onglet OS
OA.Rows(LI).Delete 'supprime la ligne LI de l'onglet OA
OS.Range("A2").Value = 1 'écrrit 1 en A2 de l'onglet OS
OS.Range("A2").AutoFill Destination:=Range("tbdd[MATRICULE]"), Type:=xlFillSeries 'remplissage automatique par série
OA.Range("A2").Value = 1 'écrrit 1 en A2 de l'onglet OA
OA.Range("A2").AutoFill Destination:=Range("Table5[Column1]"), Type:=xlFillSeries 'remplissage automatique par série
End Sub
 

Eric kankonde

XLDnaute Nouveau
Bonjour Éric, bonjour le forum,

Essaie comme ça :

VB:
Sub supprimesalarie2()
Dim OS As Worksheet 'déclare la variable OS (Onglet Source)
Dim OA As Worksheet 'déclare la variable OA (Onglet Agents)
Dim TV As Variant 'déclare la variable TV (Tableau des Valeurs)
Dim SL As Variant 'déclare la variable SL (Suppression Ligne)
Dim I As Integer 'déclare la variable I (Incrément)
Dim LI As Integer 'déclare la variable LI (Ligne)

Set OS = Worksheets("source") 'définit l'onglet source OS
TV = OS.Range("A1").CurrentRegion 'définit le tableau des valeurs TV
Set OA = Worksheets("agents") 'définit l'onglet OA
ici: 'étiquette
'définit la boîte d'entrée SL
SL = Application.InputBox("Veuillez saisir le numéro du salarié à supprimer", "SUPPRESSION", Type:=1)
If SL = False Then Exit Sub 'si bouton [Annuler], sort de la procédure
If SL < 1 Then 'condition : si SL est négative
    MsgBox "Donnée non valide !" 'message
    GoTo ici 'va à l'étiquette "ici"
End If 'fin de la condition
For I = 2 To UBound(TV, 1) 'boucle sur toutes les lignes I du tableau des valeurs (en partant de la seconde)
    'si la donnée ligne I colonne 1 de TV, est égale à SL (les deux converties en texte), définit la ligne LI, sort de la boucle
    If CStr(TV(I, 1) = CStr(SL)) Then LI = I: Exit For
Next I 'prochaine ligne de la boucle
OS.Rows(LI).Delete 'supprime la ligne LI de l'onglet OS
OA.Rows(LI).Delete 'supprime la ligne LI de l'onglet OA
OS.Range("A2").Value = 1 'écrrit 1 en A2 de l'onglet OS
OS.Range("A2").AutoFill Destination:=Range("tbdd[MATRICULE]"), Type:=xlFillSeries 'remplissage automatique par série
OA.Range("A2").Value = 1 'écrrit 1 en A2 de l'onglet OA
OA.Range("A2").AutoFill Destination:=Range("Table5[Column1]"), Type:=xlFillSeries 'remplissage automatique par série
End Sub
Bonjour. Le code a fonctionné parfaitement.
Merci beaucoup.
 

Discussions similaires

Réponses
26
Affichages
789
Réponses
2
Affichages
551