Erreur 13

bonjour,

Je cherche à faire une macro qui fait du copier coller d'une selection de données avec une condition et boucle for.

il me sort le message d'incompatibilité erreur 13.

Je débute avec VBA

Sub copier()

For i = 7 To 4000

If Cells(i, 750) <> 0 Then

Cells(i, 49).Select.Copy Worksheets("Feuil2").Cells(2, i - 1)

End If

Next

End Sub

Comment je peux resoudre ce probleme s'il vous plait?

Bonjour,

Vous pouvez supprimer le .Select.

Par ailleurs, s'il s'agit juste de reporter une valeur, et pas la mise en forme qui va avec, ne faites pas de copie. Une simple égalité suffit :

Worksheets("Feuil2").Cells(2, i - 1) = Cells(i, 49)

Bonjour Pedro22,

J'ai modifié la ligne mais par contre je reçois toujours le même message.

Bonjour Pedro22,

J'ai modifié la ligne mais par contre je reçois toujours le même message.

Je ne vois pas d'autre erreur dans le code, pouvez vous fournir un fichier fictif/anonymisé contenant la macro pour illustrer le problème.

Dans la 1ere feuille: source j'ai mes données et je veux coller les données qui respectent la condition dans la deuxième feuille en gardant le format du 2eme feuille.

Le problème se pose lorsque le contenu de votre colonne est un message d'erreur, type #VALEUR!.

Je pense aussi que vous avez inversé Ligne et Colonne dans l'une des référence de cellule.

Un essai :

Sub copier()

With Sheets(1)
    For i = 7 To 4000
        If Not IsError(.Cells(i, 10)) Then
            If Not .Cells(i, 10) = 0 Then Sheets(2).Cells(i - 1, 3).Value = .Cells(i, 3).Value
        End If
    Next
End With

End Sub

Merci, tu m'as résolu le problème mais je viens de percevoir que j'ai un deuxième.

La liste que je trouve dans la 2eme feuille contienne des lignes vides. Comment je fais pour supprimer ce vide.

J'ai pas trouvé la bonne suite arithmétique

Sub copier()

dim j as integer

j=3

With Sheets(1)

For i = 7 To 4000

If Not IsError(.Cells(i, 10)) Then

If Not .Cells(i, 10) = 0 Then Sheets(2).Cells(j, 3).Value = .Cells(i, 3).Value

j=j+1

End If

Next

End With

End Sub

Merci, tu m'as résolu le problème mais je viens de percevoir que j'ai un deuxième.

La liste que je trouve dans la 2eme feuille contienne des lignes vides. Comment je fais pour supprimer ce vide.

Un essai :

Sub copier()

With Sheets(1)
    j = 3
    For i = 7 To 4000
        If Not IsError(.Cells(i, 10)) Then
            If Not .Cells(i, 10) = 0 Then 
                Sheets(2).Cells(j, 3) = .Cells(i, 3)
                j = j + 1
            End If
        End If
    Next
End With

End Sub

ça démontre l'importance de bien indenter le code pour le rendre lisible, et éviter des erreurs de syntaxe...

Merci!

Tout marche bien!

Merci!

Tout marche bien!

Merci du retour, pense à valider le sujet !

Rechercher des sujets similaires à "erreur"