Erreur 424 sur intersect

Bonjour à vous tous

Après une petite période sans vous voir, me revoici pour un petit soucis. Une erreur "424" (objet requis) sur le code suivant:

Sub test ()

Dim k As Integer
Dim Map, m As Variant

da = Date
Range("r1") = da
For k = 6 To 300

Set Map = Columns("AF").Rows(k)
Set m = Rows(k)
Set isect = Application.Intersect(Target, Map)

If Not isect Is Nothing Then
    If Cells(k, 32).Value >= da Then
        m.Select
        Selection.Copy
        Sheets("Données").Visible = True
        Sheets("Données").Range("A232").Select
        ActiveSheet.Paste
        Rows("232:232").Select
        Selection.Copy
        Sheets("En cours").Select
        Rows("6:6").Select
        Selection.Insert Shift:=xlDown, CopyOrigin:=xlFormatFromLeftOrAbove
        Rows("6:6").Select
        ActiveSheet.Paste
        Rows("6:6").RowHeight = 16
    End If
End If

Next k

End Sub

Bon le code n'est pas très joli, hélas.

L'intérêt, c'est simplement de copier une ligne sur une autre feuille sous condition (la condition étant "si dans la cellule k de la colonne AF, la date est supérieure ou égale à celle du jour d'ouverture du fichier").

Ce code se lance à l'ouverture du fichier (sous Private Sub Workbook_Open(), avec un call "test").

Quelques tentatives en essayant de définir les propriétés de k, Map et m (k en integer et Map, m en Variant ou Range).

Une autre tentative en modifiant le "target" par "activecell". Dans ce dernier cas, l'erreur disparait mais le code ne semble pas se lancer (pas de copie des lignes respectant les conditions)

Donc me revoici devant vous pour implorer votre aide ou tout du moins avoir une idée du problème.

Merci par avance.

Bonjour,

Target n'est ni déclarée, ni définie... Erreur logique...

Et si tu pouvais supprimer les Select et autres éléments inutiles de ta macro, ce serait moins pénible à regarder, et tu pourrais gagner en efficacité !

merci pour ta rapidité

Je vais donc voir à le définir, le target

Et concernant les select... comment les supprimer? Je peux faire des liens sans ouvrir une page? Ou sans "afficher" une feuille masquée?

On peut bien sûr écrire sur une feuille masquée (voire coller)... La sélection n'est qu'une manipulation supplémentaire qui ne fait que ralentir l'exécution...

Tu as Map qui représente une cellule et m une ligne (variables qu'il faudrait déclarer en type Range !)

isect et Target ne sont pas déclarées... Et isect n'intervient pas dans le reste du code...

Ce qui fait planer un doute sur ce que tu veux effectivement faire !

je crois comprendre, ou du moins un peu plus.

Par contre, concernant isect, je ne l'ai en effet pas défini (d'ailleurs je vais le faire sauter pour insérer le tout dans le If).

Target, je l'ai défini en range aussi. Est-ce bien ça?

Sinon ok pour les select que je ferai disparaître gentiment.

Vraiment merci

Bonsoir,

intersect permet de renvoyer la partie commune de 2 plages... dans ton cas pourquoi as tu besoin de cela ? d'ou "viennent" ces 2 plages dont tu cherche l'intersection ?

par contre maintenant j'ai un autre code d'erreur:

"erreur 5 argument ou appel de procédure incorrect"

en surlignant:

If Not Intersect(Target, Map) Is Nothing Then

sur ce code donc:

Sub test()
Dim k As Integer
Dim Map, m As Range
Dim Target As Range

da = Date
Range("r1") = da
For k = 6 To 300

Set Map = Columns("AF").Rows(k)
Set m = Rows(k)

If Not Intersect(Target, Map) Is Nothing Then
    If Cells(k, 32).Value >= da Then
        m.Select
        Selection.Copy
        Sheets("Données").Visible = True
        Sheets("Données").Range("A232").Select
        ActiveSheet.Paste
        Rows("232:232").Select
        Selection.Copy
        Sheets("En cours").Select
        Rows("6:6").Select
        Selection.Insert Shift:=xlDown, CopyOrigin:=xlFormatFromLeftOrAbove
        Rows("6:6").Select
        ActiveSheet.Paste
        Rows("6:6").RowHeight = 16
    End If
End If

Next k
End Sub

(code non amélioré)

@pierre: et bien... vu comme ça... c'est sur que je ne compare pas des cellules. Ou alors une comparaison en cellule d'une même colonne, ligne par ligne par-rapport à la date du jour.

Y aurait-il un autre moyen de faire cette action?

qu'elle action ? encore une fois j'ai pas compris que veut tu "contrôler" avec ton code :

If Not Intersect(Target, Map) Is Nothing Then

Target n'est "rien"... donc il déclenchera toujours une erreur tant qu'il n'est pas défini !

Mais penche-toi sur la question de pierre-jy !

Quelle intersection vises-tu qui ne serait pas définie ?

Et à quoi veux-tu aboutir ?

en fait j'ai effectivement retiré cet intersect car il ne me sert exactement plus.

A l'origine, la manip était de cliquer sur une cellule et la condition se lançait. Mais pas beaucoup de gain de temps alors j'ai préféré lancer la macro lors de l'ouverture du fichier, en oubliant de retire l'intersect.

Toutes mes excuses mais très sincèrement merci pour votre rapidité et efficacité

Rechercher des sujets similaires à "erreur 424 intersect"