Erreur '1004' : Cette sélection n'est pas valide

Bonjour,

J'ai un petit problème sur mon code : Je veux pouvoir redimensionner mes plages de données à chaque fois qu'est enregistré une nouvelle donnée.

Ici l'avant dernière ligne de mon code (Plage.SpecialCells...) ne fonctionne pas et j'ai le message d'erreur "Cette sélection n'est pas valide. vérifiez que les zones de copie et de collage ne se chevauchent pas, sauf si elles ont la même taille et la même forme".

Dim Plage As Range, LastCol2 As Integer

With Sheets("Données N°Marché")
            ' Enregistrement du N°Marché dans la base de données : Fonctionne parfaitement
            Set CelluleRecherche = .Range("ListeRéférents2").Find(ValeurRechercheReferent, LookIn:=xlValues, LookAt:=xlWhole)
            Ligne_insertion_marché = .Cells(Rows.Count, CelluleRecherche.Column).End(xlUp).Row + 1
            .Cells(Ligne_insertion_marché, CelluleRecherche.Column) = Sheets("Enregistrer un marché").Range("N°MarchéFormulaire")

            'Redimensionnement des plages de données nommée /!\ C'est là que ça coince !
            LastCol2 = .Cells(1, Columns.Count).End(xlToLeft).Column
            Set Plage = Columns(1).Resize(, LastCol2).EntireColumn
            Plage.SpecialCells(xlCellTypeConstants, 23).CreateNames Top:=True, Left:=False, Bottom:=False, Right:=False
        End With

Je me demande si cela ne vient pas de ma variable Plage car j'ai un doute sur la validité de sa déclaration, mais là je coince...

En vous remerciant par avance !

Bonjour,

Plusieurs remarques :

Tout d'abord impossible pour moi de tester sans fichier joint, donc je vous donnerai seulement des conseils.

Conseil 1 : exécutez en pas a pas et après l'affectation de Plage, regardez sa valeur, par exemple en tapant dans la fenetre immediate :

? Plage.Address

Ensuite,

Attention, vous utilisez un integer (lastCol2) pour aller chercher une valeur qui peut exéder la valeur maximal d'un integer ! Préférez le type Long

LasCol2 As Long

Ensuite, pas besoin de .EntireColumn puisque vous partez de Column(1) qui est… déjà une colonne.

Et enfin, vérifiez que les noms n'existent pas déjà car autrement cela aussi peut créer des erreurs.

EDIT : excusez moi je viens de (certainement) voir l'erreur :

Vous écrivez

Set Plage = Columns(1).Resize(, LastCol2).EntireColumn

qui veut dire

Set Plage = ActiveSheet.Columns(1).Resize(, LastCol2).EntireColumn

il manque le point...

remplacez par et réessayez

Set Plage = .Columns(1).Resize(, LastCol2) ' sans .EntireColumn redondant

Bonjour,

Ce serait bien quand même que tu te mettes à joindre le classeur qui va bien avec...

A+

J'ai effectué les changements, et effectivement ça fonctionne !

Néanmoins, j'ai essayé de trouver d'où venait l'erreur en rajoutant mon code initial, et maintenant même dans son état initial le code fonctionne...

Je vous transfert le fichier "anonymisé" si ça peut vous être utile

En tous pour moi ça fonctionne, alors merci et bonne journée !

Rechercher des sujets similaires à "erreur 1004 cette selection pas valide"