Supprimer une ligne presente dans plusieurs feuilles

Lapeno

XLDnaute Nouveau
Bonjour à tous ,

Je suis en train de mettre en place une macro qui supprime une ligne dans une feuille,"BD_matières" suivant une valeur recherchée "num_ligne_A".

Mon problème est que la ligne supprimée dans ma feuille "BD_matières", et aussi présente dans la feuille "feuilleA" et "feuilleB".
Je souhaiterais donc supprimé ma ligne dans toute les feuilles tout en gardant mes conditions.
Dans le code si dessous, j'arrive bien à traiter la suppression dans la première feuille, mais je ne sais pas comment poursuivre mon code pour effectuer la même chose dans mes autres feuilles?

Si qq'un à une petite idée ...

Sub Supprimer_A()

If [num_ligne_A] = 0 Then Exit Sub
If MsgBox("Confirmation de la suppression du matériau", vbYesNo, "Suppression") = vbYes Then
Sheets("BD_matières").Rows([num_ligne_A] + 1).Delete Shift:=xlUp
If [nb_materiau_bd] < [num_ligne_A] Then [num_ligne_A] = [num_ligne_A] - 1
If [num_ligne_B] > [nb_materiau_bd] Then [num_ligne_B] = [nb_materiau_bd]
End If
End Sub
 
Dernière édition:

Pierrot93

XLDnaute Barbatruc
Re : Supprimer une ligne presente dans plusieurs feuilles

Bonjour,

déjà, comprends pas tout de ton code, les noms entre accolades comme [nb_materiau_bd] correspondent bien à des plages nommées... sans petit fichier en pièce jointe représentant bien le problème posé, difficile de t'en dire plus...

bonne journée
@+
 

Lapeno

XLDnaute Nouveau
Re : Supprimer une ligne presente dans plusieurs feuilles

Hello pierrot93

Voila mon fichier.

Dans ma feuille "Consultation_BD", j'ai deux boutons "ENREGISTRER" et "SUPPRIMER" qui me permettent de modifier ou supprimer un matériau dans ma "BD_matières".

Mon but est de reporter les actions effectuées dans la "BD_matières" dans les feuilles "Listing_matériaux_PC" et "Listing_matériaux_TSW"

Aujourd'hui, tout fonctionne super bien en ce qui concerne ma "BD_matières"'(création, modification et suppression), mais je n'arrive pas à mettre à jour mes 2 autres feuilles.

En espérant être un peu plus clair.
 

Pièces jointes

  • 2010-07-08 - Moulinette.xlsm
    34.5 KB · Affichages: 143

Lapeno

XLDnaute Nouveau
Re : Supprimer une ligne presente dans plusieurs feuilles

Voila le fichier. :eek:
 

Pièces jointes

  • 2010-07-08 - Moulinette.zip
    26 KB · Affichages: 68
  • 2010-07-08 - Moulinette.zip
    26 KB · Affichages: 58
  • 2010-07-08 - Moulinette.zip
    26 KB · Affichages: 65
Dernière édition:

Pierrot93

XLDnaute Barbatruc
Re : Supprimer une ligne presente dans plusieurs feuilles

Re,

essaye ce code, non testé, mais perso je n'aime pas beaucoup travailler avec la fonction "Evaluate", préfère que les objets "range" soient nommés et les propriétés indiquées...

Code:
Dim ws As Worksheet
If MsgBox("Confirmation de la suppression du matériau", vbYesNo, "Suppression") = vbYes Then
    Sheets("BD_matières").Rows([num_ligne_A] + 1).Delete Shift:=xlUp
    For Each ws In Worksheets
        If ws.Name <> "BD_matières" Then
            ws.Rows([num_ligne_A] + 1).Delete Shift:=xlUp
        Next ws
    Next ws
    If [nb_materiau_bd] < [num_ligne_A] Then [num_ligne_A] = [num_ligne_A] - 1
    If [num_ligne_B] > [nb_materiau_bd] Then [num_ligne_B] = [nb_materiau_bd]
End If

@+
 

Pierrot93

XLDnaute Barbatruc
Re : Supprimer une ligne presente dans plusieurs feuilles

Re,

Aarf, un "next" à la place d'un "end if", désolé....

Code:
Sub test()
Dim ws As Worksheet
If MsgBox("Confirmation de la suppression du matériau", vbYesNo, "Suppression") = vbYes Then
    Sheets("BD_matières").Rows([num_ligne_A] + 1).Delete Shift:=xlUp
    For Each ws In Worksheets
        If ws.Name <> "BD_matières" Then
            ws.Rows([num_ligne_A] + 1).Delete Shift:=xlUp
        End If
    Next ws
    If [nb_materiau_bd] < [num_ligne_A] Then [num_ligne_A] = [num_ligne_A] - 1
    If [num_ligne_B] > [nb_materiau_bd] Then [num_ligne_B] = [nb_materiau_bd]
End If
End Sub
 

Lapeno

XLDnaute Nouveau
Re : Supprimer une ligne presente dans plusieurs feuilles

Re,

J'ai rajouté une ligne dans le code que tu m'as transmis pour éviter des erreurs quand la BD est vierge.
If [num_ligne_A] = 0 Then Exit Sub

Mais il y a toujours en petit truc qui tourne pas rond :confused:.
Quand je sélectionne le matériau "Test_A" est que je le supprime, la macro n'efface pas la bonne info dans les feuilles "Listing_matériaux_PC" et "Listing_matériaux_TSW".

Il faudrait pas rajouter une valeur dans <> du code ci dessous
If ws.Name <????> "BD_matières" Then
 

Pièces jointes

  • 2010-07-08 - Moulinette.zip
    26.9 KB · Affichages: 63
  • 2010-07-08 - Moulinette.zip
    26.9 KB · Affichages: 59
  • 2010-07-08 - Moulinette.zip
    26.9 KB · Affichages: 62

Pierrot93

XLDnaute Barbatruc
Re : Supprimer une ligne presente dans plusieurs feuilles

Re,

en l'état le code que je t'ais donné, supprime dans tous les onglets, sauf dans l'onglet "BD_matières", la ligne dont le numéro est calculé à partir du contenu de la cellule nommée "num_ligne_A" + 1. .... sinon pour ne pas traiter une autre feuille, modifier le test ainsi :

Code:
If ws.Name <> "Feuil1" And ws.Name <> "Feuil2" Then

bon après midi
@+
 

Pierrot93

XLDnaute Barbatruc
Re : Supprimer une ligne presente dans plusieurs feuilles

Re,

attention ne numéro de la ligne supprimée n'est pas du tout identique au numéro présent dans la colonne A de tes onglets "Listing_matériaux_PC" et "Listing_matériaux_TSW".... Ils n'ont même rien à voir...
 

Lapeno

XLDnaute Nouveau
Re : Supprimer une ligne presente dans plusieurs feuilles

Re,

Donc si je comprends bien, il faut que je fasse une recherche de texte qui me permet de retrouver le numéro associé au matériau, afin de pouvoir les supprimer dans les feuilles souhaitées.

Ben j'ai pas fini d'avoir les cheveux qui poussent à l'intérieur ... lol
 

Pierrot93

XLDnaute Barbatruc
Re : Supprimer une ligne presente dans plusieurs feuilles

Re,

bon je t'ai fais un petit exemple qui ressemble à ce que tu souhaites, enfin je pense, à adapter, est recherché dans toutes les feuilles sauf dans la feuille "matières" la valeur contenu dans la cellule nommée "num_ligne_A" :

Code:
Sub test()
Dim ws As Worksheet, x As Range
If MsgBox("Confirmation de la suppression du matériau", vbYesNo, "Suppression") = vbYes Then
    For Each ws In Worksheets
        If ws.Name <> "BD_matières" Then
            Set x = ws.Range("A:A").Find([num_ligne_A].Value, , xlValues, xlWhole, , , False)
            If Not x Is Nothing Then ws.Rows(x.Row).Delete xlUp
        End If
    Next ws
End If
End Sub

@+
 

Discussions similaires

Statistiques des forums

Discussions
312 310
Messages
2 087 127
Membres
103 479
dernier inscrit
Compta