VBA erreur 1004

Bonjour,

J'ai créé une petite macro vba qui fonctionnait très bien jusqu'à ce que je réalise qu'un certain scénario crée une erreur 1004 "pas de cellules correspondantes".

En gros, je filtre un tableau sur une date, et ensuite je copie/colle les cellules visibles de mon tableau dans un autre onglet. Le bug apparaît lorsque la date sur laquelle je filtre n'existe pas dans le document et qu'il n'y a donc pas de cellules visibles à copier.

J'ai ajouté une fonction SI pour contourner ce problème: IF le nombre de lignes visibles dans le tableau est supérieur à 1 (j'ai pris en compte l'entête du tableau), continuer avec le programme, ELSE, afficher messagebox "aucun retour à cette date" et arrêter la macro.

Cependant, la fonction SI ne semble pas être prise en compte dans la macro car c'est toujours la même ligne qui pose problème (je l'ai soulignée)

Toute aide est grandement appréciée merci !

Sub MACRO2()

Sheets("Traduction retours").Activate
Range("$A$3:$Z$50000").AutoFilter Field:=1, Criteria1:="<>" 

If Range("$A$3:$Z$50000").SpecialCells(xlCellTypeVisible).Count > 1 Then    --> fonction IF que j'ai rajouté pour essayer de contourner le problème 1004

[u]Range("A4:Z50000").SpecialCells(xlCellTypeVisible).Select[/u]    
Selection.Copy
Sheets("Histo_MaJ_Trads").Activate
Range("A65536").End(xlUp).Offset(1).Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
        :=False, Transpose:=False

Sheets("Suivi_MaJ").Activate
Range("A5").EntireRow.Insert
Cells(5, 1).Value = "Modification traduction"
Cells(5, 2).Value = Range("F1")
Cells(5, 3).Value = Range("B1")
Cells(5, 4).Value = Sheets("Traduction retours").Range("$A4:$A50000").SpecialCells(xlCellTypeVisible).Count
Range("A5:Z1000").Sort Key1:=Range("B5")

Else

MsgBox "Aucun retour à cette date"

End If
End Sub

Bonjour

Sans fichier c'est moins évident de voir. Mais peut être essayer ceci :

Sub MACRO2()

With Sheets("Traduction retours")
    .Activate
    .Range("$A$3:$Z$50000").AutoFilter Field:=1, Criteria1:="<>"
    On Error Resume Next
    .Range("A4:Z50000").SpecialCells(xlCellTypeVisible).Copy
    If Err.Number = 0 Then GoTo fin
    On Error GoTo 0
End With
With Sheets("Histo_MaJ_Trads")
    .Activate
    .Range("A" & .Range("A" & .Rows.Count).End(xlUp).Row + 1).PasteSpecial Paste:=xlPasteValues '
End With
With Sheets("Suivi_MaJ")
    .Range("A5").EntireRow.Insert
    .Cells(5, 1).Value = "Modification traduction"
    .Cells(5, 2).Value = .Range("F1")
    .Cells(5, 3).Value = .Range("B1")
    .Cells(5, 4).Value = Sheets("Traduction retours").Range("$A4:$A50000").SpecialCells(xlCellTypeVisible).Count
    .Range("A5:Z1000").Sort Key1:=Range("B5")
End With
Exit Sub
fin: MsgBox "Aucun retour à cette date"

End Sub 

Si ok, n'oubliez pas de cloturer le fil en cliquant sur le petit v en haut à droite

Cordialement

Bonjour Dan,

Merci beaucoup pour votre retour ! La macro que vous avez écrite affichait le message d'erreur même en cas de non erreur, et puis, je dois avouer que je ne comprenais pas vraiment tout ce que vous aviez réécrit (ce qui n'est pas pratique si je dois modifier ce programme dans le future). J'ai donc simplement rajouté une ligne "On error goto fin" en m'inspirant de votre code et cela semble fonctionner !

Bonne journée

Re

Ok. Si vous voulez je peux vous expliquer bien entendu

Cordialement

Rechercher des sujets similaires à "vba erreur 1004"