Pb suppression de ligne

  • Initiateur de la discussion Initiateur de la discussion JBSB
  • 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 !

J

JBSB

Guest
Bonsoir le forum,

Voilà, j'ai un p'tit pb. J'ai une feuille dans laquelle je saisie des données. Les lignes sont variables, les colonnes fixes("A" à "BF")
Mon pb est que je peux être appelé à supprimer un N° enregistrement (situé dans la colonne A). En fait j'appelle depuis un USF le N° d'enregistrement désigné et je le modifie. Dans la table, il supprime l'ancienne version de l'enregistrement et insére la nouvelle. Mon problème est que je suprrimer mon ancien enregsitrement en utilisant un filtre, voici un exemple (Mon N° d'enregistrement est repris sur la varirable Enrcomp, L est une variable m'indiquant ma première ligne libre de la feuille) :

Dim Plage As Range

If Sheets("Table").AutoFilterMode Then
Rows("1:1").Select
Selection.AutoFilter
Else
End If

Sheets("Table").Select
Rows("1:1").Select
Selection.AutoFilter
Selection.AutoFilter Field:=1, Criteria1:=EnrComp

Set Plage = Sheets("Table").AutoFilter.Range

Set Plage = Plage.Offset(1, 0).Resize(Plage.Rows.Count)

Plage.EntireRow.Select
Selection.Delete Shift:=xlUp

Sheets("Table").Select
Selection.AutoFilter

L = Sheets("Table").Range("B65536").End(xlUp).Row + 1

Ma feuille ("Table") est composée aujourd'hui de 2500 lignes. Un enregistrement peut avoir plusieurs lignes (le numéro est tjs le meme dans ce cas). Mais, je me suis aperçu de certaines défaillances dans ce programme, il arrive (moments indéterminés) que l'effacement de l'enregistrement ancien (voir prog ci-dessus) ne se réalise pas bien et efface d'autre de la feuille ("Table"). On m'a dit que le filtre était un outil moyen pour ce genre d'opération. Je demande alors si il n'existerait pas une autre méthode sans utilisation du filtre et si oui, pouvez-vous m'expliquer svp, merci.

Bonne soirée.

JBSB.
 
Bonsoir JBSB,

Effectivement, je pense que l'utilisation d'AutoFilter n'est pas la meilleure solution pour ce type d'opération (j'ai moi-même connu quelques soucis avec cette méthode)

Pour ma part, je pense qu'il est préférable de transférer les données dans un tableau variant pour ensuite tester chaque élément dans une boucle FOR NEXT et supprimer par Delete les lignes trouvées.

Tu peux peut-être essayer le code suivant :

Dim Tempo As Variant
Dim L As Long
Dim N As Long
Dim EnrComp as long

'Exemple : supprimer l'enregistrement n° 10
EnrComp = 10

Application.ScreenUpdating = False
'Détermine le numéro de la dernière ligne utilisée
L = Sheets("Table").Range("A65536").End(xlUp).Row
'Transférer la zone Numéros d'Enregistrement dans un tableau temporaire
Tempo = Range(Cells(1, 1), Cells(L, 1)).Value
For N = L To 1 Step -1
If Tempo(N, 1) = EnrComp Then
Sheets("Table").Rows(N).Delete
End If
Next N
Application.ScreenUpdating = True

Cordialement.
DIDIER
 
- 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
Assurez vous de marquer un message comme solution pour une meilleure transparence.

Discussions similaires

Réponses
13
Affichages
2 K
Retour