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:

Lapeno

XLDnaute Nouveau
Re : Supprimer une ligne presente dans plusieurs feuilles

rhaaaaaaaaaaaaa !!!!!!!!!

Je suis un guignol, j'arrive déjà à connaitre le numéro affecté au matériau que je sélectionne dans ma liste. c'est la cellule A2 de la feuille "consultation BD"
En plus, ce numéro est le même dans les feuilles "BD_matériaux","Listing_matériaux_PC" et "Listing_matériaux_TSW".
Ça fait des plombes que je cherche un truc que j'ai sous le nez !!!:mad:

Par contre, j'ai pas compris le code de ton dernier message, dsl ...
ca fait que 1 semaine que je fais (enfin j'essaie) de faire du VB, et je ne maitrise pas très bien la combinaison des fonctions.

J'arrive pas à dire, tu prends la valeur de la cellule [A2] de la feuille "consultation BD", tu recherches cette valeur dans la feuille "Listing_matériaux_PC", tu sélectionnes la ligne et tu la supprimes, et tu fais pareil dans la feuille "Listing_matériaux_TSW" :eek:

Au faite, tu as appris ou le langage VB, les "For Each cell In Range", "Exit Sub" ....
 

Pierrot93

XLDnaute Barbatruc
Re : Supprimer une ligne presente dans plusieurs feuilles

Re,

tu as testé mon code de 13h42, il recherche la valeur d'une cellule nommée dans toutes tes feuilles sauf 1.... ??

Où j'ai appris le vba, au début avec l'enregistreur et l'aide vba, et ensuite ce forum m'a beaucoup apporté également... et m'apporte toujours...
 

Lapeno

XLDnaute Nouveau
Re : Supprimer une ligne presente dans plusieurs feuilles

Oui j'ai testé, mais pas avec la bonne valeur à recherchée.
J'ai nommer ma cellule A2 en "TEST", mais je sais pas ou l'intégrer dans ton 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
 

Pierrot93

XLDnaute Barbatruc
Re : Supprimer une ligne presente dans plusieurs feuilles

Re,

si ta cellule se nomme TEST :

Code:
Set x = ws.Range("A:A").Find([TEST].Value, , xlValues, xlWhole, , , False)

ou sinon, sans plage nommée...

Code:
Set x = ws.Range("A:A").Find(Sheets("NomFeuilleValeurArechercher").Range("A2").Value, , xlValues, xlWhole, , , False)
 

Lapeno

XLDnaute Nouveau
Re : Supprimer une ligne presente dans plusieurs feuilles

Alors voila ce que j'ai dans mon code:

Sub Supprimer_A()

Dim ws As Worksheet, x As Range
If [num_ligne_A] = 0 Then Exit Sub
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].Value, , xlValues, xlWhole, , , False)
If Not x Is Nothing Then ws.Rows(x.Row).Delete 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

Mais j'ai un bug au niveau du "Set x".
De plus, avant le bug, il m'efface la ligne A2 de ma feuille "BD_matières".
A quoi corresponde les éléments ws et x ?
 

Pièces jointes

  • 2010-07-08 - Moulinette.zip
    26.4 KB · Affichages: 24
  • 2010-07-08 - Moulinette.zip
    26.4 KB · Affichages: 15
  • 2010-07-08 - Moulinette.zip
    26.4 KB · Affichages: 14

Pierrot93

XLDnaute Barbatruc
Re : Supprimer une ligne presente dans plusieurs feuilles

Bonjour,

essaye ainsi, mais attention, tu voulais supprimer la ligne dans la feuille sur laquelle est la plage nommée.... si tu débutes travaille plutôt avec les objets feuille et range, plutôt qu'avec des plages nommées que tu appele de plus au travers de la fonction Evaluate.

D'autre part, allège les fichiers déposés sur le forum, seuls les éléments du problème posé sont nécessaires dans le classeur....

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

bonne journée
@+
 

Discussions similaires

Statistiques des forums

Discussions
312 370
Messages
2 087 689
Membres
103 639
dernier inscrit
NIEMASAFI