Erreur d'objet avec la fonction .Union Le sujet est résolu

Y compris Power BI, Power Query et toute autre question en lien avec Excel
m
matotto
Jeune membre
Jeune membre
Messages : 10
Inscrit le : 16 juillet 2018
Version d'Excel : 2013 FR

Message par matotto » 17 janvier 2020, 14:48

Salut Salut!

Voila mon code qui doit supprimer supprimer des lignes avec un pas constant. Il rassemble dans un Range (plagetot) l'ensemble des lignes concernées en partant du bas puis il les sup.

Sauf qu'il m'indique une erreur d'objet que je ne trouve pas :/


Sub supp_N_sur_N_plus_un()

Dim i, last, pas
Dim plage, plagetot As Range

pas = InputBox("choisir le pas ", "", 1)
last = [C65000].End(xlUp).Row

For i = last To 2 Step -1

plage = Rows((i - 1) & ":" & (i - pas))

If plagetot Is Nothing Then

Set plagetot = plage

Else

plagetot = Application.Union(plagetot, plage)

End If
Next

plagetot.EntireRow.Delete
End Sub


Merci pour vos aides :) !
Avatar du membre
curulis57
Passionné d'Excel
Passionné d'Excel
Messages : 3'751
Appréciations reçues : 226
Inscrit le : 4 janvier 2016
Version d'Excel : 2016 FR / 2019 FR

Message par curulis57 » 17 janvier 2020, 23:22

Salut matotto,

inutile de s'étendre sur le code : ça ne peut pas fonctionner!
Fournis-nous plutôt un fichier représentatif et des explications claires et complètes : ça ira plus vite que de se lancer dans des explications kilométriques! :lole:
:joindre:

8-)
A+
Avatar du membre
thev
Membre impliqué
Membre impliqué
Messages : 2'482
Appréciations reçues : 209
Inscrit le : 13 juin 2016
Version d'Excel : 2019 FR 64 bits

Message par thev » 19 janvier 2020, 11:50

Bonjour,

La variable "plage" est parfaitement inutile et en plus mal définie. Elle est définie en tant que Variant (défaut) et non en tant que Range.
Pour une bonne visibilité, le code doit être indenté et posté avec la balise "</>"
Sub supp_N_sur_N_plus_un()

    Dim i As Long, last As Long, pas As Integer
    Dim plagetot As Range
    
    pas = InputBox("choisir le pas ", "", 1)
    last = [C65000].End(xlUp).Row
    
    For i = last To 1 Step -pas
        If plagetot Is Nothing Then
            Set plagetot = Rows(i)
        Else
            Set plagetot = Application.Union(plagetot, Rows(i))
        End If
    Next
    
    If Not plagetot Is Nothing Then plagetot.Delete
End Sub
1 membre du forum aime ce message.
m
matotto
Jeune membre
Jeune membre
Messages : 10
Inscrit le : 16 juillet 2018
Version d'Excel : 2013 FR

Message par matotto » 19 janvier 2020, 13:04

Bonjour,

Désolé pour les erreurs grossières je suis vraiment débutant.

Le code proposé marche super merci beaucoup !! :)
Répondre Sujet précédentSujet suivant
  • Sujets similaires
    Réponses
    Vues
    Dernier message