Erreur sur Range d'une séléction conditionnelle

Bonjour à tous,

Je solicite à nouveau votre aide car je suis à court d'idée pour règler mon problème.

J'ai une macro qui fonctionne parfaitement dans un premier fichier excel, mais qui me renvoi un message d'erreur quand je l'applique à un autre fichier. Pour être plus claire ma macro :

1) parcours la colonne L d'une feuille excel et repère toutes les cellule où on trouve un "/"

2) copie les lignes associées à ces cellules dans une autre feuille

3) fait un second trie dans cette seconde feuille en séléctionnant les cellules comprenant "-JOCUSER"

4) supprime les lignes associée toujours dans cette seconde feuille.

J'ai utilisé cette macro sur un permier fichier elle fonctionne très bien. Je l'ai ensuite copier/coller dan sun autre fichier excel pour l'utiliser sur une autre plage de donnée (exactement du même format), et là, ma macro fonctionne jusqu'à l'étape 3, puis me donne une erreur "1004 : erreur définie par l'application ou par l'objet".

Voici la macro (en rouge là ou l'erreur m'apparait, c'est sur le Range plus exactement) :

Sub Factures()

Dim i As Long, j As Long, k As Long, slct As Variant, l As Integer, Cpt As Integer, CptSh As Integer

' je commence par créer une nouvelle feuille si elle n'existe pas

Cpt = 0

CptSh = Sheets.Count

For l = 1 To CptSh

If Sheets(l).Name <> "Facture" Then Cpt = Cpt + 1 Else Exit For

Next l

If Cpt = CptSh Then

Sheets.Add After:=Sheets(Sheets.Count)

ActiveSheet.Name = "Facture"

End If

' je récupère toutes les lignes qui m'intéressent

Sheets("Nosica").Select

j = 1

For i = 1 To Range("A" & Rows.Count).End(xlUp).Row

If InStr(Cells(i, 12), "/") <> 0 Then

Rows(i).Select

Selection.Copy

Sheets("Facture").Select

Cells(j, 1).Select

ActiveSheet.Paste

Sheets("Nosica").Select

j = j + 1

End If

Next i

' je fais un dernier trie dans ma seconde feuille qui vient d'être créer

Sheets("Facture").Select

For k = 1 To Range("A" & Rows.Count).End(xlUp).Row

If InStr(Cells(k, 12), "-JOCUSER,") <> 0 Then

slct = slct & k & ":" & k & ","

End If

Next k

slct = Left(slct, Len(slct) - 1)

Sheets("Facture").Range(slct).Select

Selection.Delete

End Sub

Peut être que quelqu'un a déjà rencontré le même problème, je cherche depuis un moment je n'arrive pas à expliquer mon erreur.

Merci d'avance pour votre aide

Bonjour,

A tester

Sheets("Facture").Select
    slct = """"
    For k = 1 To Range("A" & Rows.Count).End(xlUp).Row
        If InStr(Cells(k, 12), "-JOCUSER,") <> 0 Then
            slct = slct & k & ":" & k & ","
        End If
    Next k
    slct = Left(slct, Len(slct) - 1) & """"
    Sheets("Facture").Range(slct).Select
    Selection.Delete

Jean-Eric merci pour ta réponse,

Malheuresement ça ne fonctionne pas !

Mais je vais essayer de partir de ça

Jean-Eric merci pour ta réponse,

Malheuresement ça ne fonctionne pas !

Mais je vais essayer de partir de ça

Bonjour,

Salut Jean-Eric

Il va de soi que sans fichier ... il faut faire travailler l'imagination ...

Pour commencer, donc à vérifier avant tout ce qui concerne slct ...

1. Dim slct As String

2. S'assurer qu'en aucun cas ce string peut être vide ...

Bonjour,

Quelque chose m'échappe...

Pourquoi ne pas tester également la présence "-JOCUSER," avant de copier la ligne ?

Plus rien à supprimer ensuite.

eric

Bonjour Eric et James007,

Déjà désolé de ne pas avoir fourni le fichier avec la macro, j'y ai pensé mais il contenait des informations internes à mon entreprise que je ne pouvais pas partager.

J'ai réglé mon problème en suivant les conseils d'eriiic, ça simplifie par la même occasion mon code.

Merci à tous pour votre aide !

PS : voici le code final

Sub Factures()

Dim i As Long, j As Long, k As Long, slct As Variant, l As Integer, Cpt As Integer, CptSh As Integer

Cpt = 0

CptSh = Sheets.Count

For l = 1 To CptSh

If Sheets(l).Name <> "Facture" Then Cpt = Cpt + 1 Else Exit For

Next l

If Cpt = CptSh Then

Sheets.Add After:=Sheets(Sheets.Count)

ActiveSheet.Name = "Facture"

End If

Sheets("Nosica").Select

j = 1

For i = 1 To Range("A" & Rows.Count).End(xlUp).Row

If InStr(Cells(i, 12), "/") <> 0 Then

If Not Cells(i, 12) Like "*JOCUSER*" Then

Rows(i).Select

Selection.Copy

Sheets("Facture").Select

Cells(j, 1).Select

ActiveSheet.Paste

Sheets("Nosica").Select

j = j + 1

End If

End If

Next i

End Sub

Rechercher des sujets similaires à "erreur range selection conditionnelle"