Erreur dans mon code

Résolu
mikel831 Messages postés 220 Date d'inscription   Statut Membre Dernière intervention   -  
Bruno83200_6929 Messages postés 623 Date d'inscription   Statut Membre Dernière intervention   -

Bonjour,
Dans le code suivant:
Dim NJ as Range
'Worksheets("Feuil2").Range(MaPlage.Address).Copy _
    Destination:=Worksheets("Toto").Range("E3475")
Worksheets("Feuil2").Range(MaPlage.Address).Copy _
    Destination:=Worksheets("Toto").NJ.Offset(0, 4)

1) la ligne mise en commentaire fonctionnait correctement.
2) comme l'adresse "E3475" n'est pas toujours la même, je l'ai remplacé par une variable NJ (set NJ = ActiveCell) . Mais alors, ça buggue ...
Où est mon erreur ?


Windows / Chrome 123.0.0.0

A voir également:

2 réponses

blux Messages postés 27121 Date d'inscription   Statut Modérateur Dernière intervention   3 359
 

Salut,

on suppose que c'est du VBA/Excel ?


0
mikel831 Messages postés 220 Date d'inscription   Statut Membre Dernière intervention   18
 

Oui , désolé, j'ai oublié de préciser ...

0
Bruno83200_6929 Messages postés 623 Date d'inscription   Statut Membre Dernière intervention   141
 

Bonjour,, 


Il semble que vous ayez une erreur dans la manière dont vous essayez d'utiliser la variable NJ. Dans votre code, vous avez déclaré NJ comme une variable de type Range, mais vous essayez de l'utiliser comme s'il s'agissait d'une propriété de l'objet Worksheet.

Pour utiliser correctement la variable NJ, vous devez l'utiliser comme une plage à part entière. Voici comment vous pourriez le faire :

Dim NJ As Range
Set NJ = Worksheets("Toto").Range("E3475") ' ou toute autre façon de définir NJ

Worksheets("Feuil2").Range(MaPlage.Address).Copy Destination:=NJ.Offset(0, 4)


Dans ce code, nous avons d'abord défini la variable NJ comme une plage valide dans la feuille "Toto". Ensuite, nous utilisons cette plage NJ comme destination pour la copie de la plage MaPlage depuis la feuille "Feuil2", avec un décalage de 4 colonnes vers la droite.

En espérant vous avoir aidé.

0
mikel831 Messages postés 220 Date d'inscription   Statut Membre Dernière intervention   18
 

Merci pour tes explications toujours aussi claires et précises:
ça fonctionne bien avec Copy Destination:=NJ.Offset(0, 4) !
En fait, j'ai compris que NJ étant défini comme un Range de la feuille "Toto" , il est donc redondant de préciser dans Copy Destination:= la feuille contenant NJ (ici, Worksheets("Toto")) . C'est ce qui devait provoquer le bug ?
Merci pour ton aide! Cordialement, Mikel

1
Bruno83200_6929 Messages postés 623 Date d'inscription   Statut Membre Dernière intervention   141 > mikel831 Messages postés 220 Date d'inscription   Statut Membre Dernière intervention  
 


Oui, exactement ! Je suis heureux que mes explications aient été utiles.

Lorsque vous définissez une plage (Range) dans une feuille spécifique (dans ce cas, "Toto"), vous capturez déjà l'emplacement précis de cette plage dans cette feuille. Ainsi, lorsque vous utilisez NJ.Offset(0, 4), vous dites essentiellement à Excel de copier vers la plage qui est décalée de 4 colonnes à droite par rapport à NJ sur la feuille "Toto". Par conséquent, spécifier la feuille dans Copy Destination devient redondant, car NJ lui-même est déjà associé à la feuille "Toto".

En omettant la feuille dans Copy Destination, vous évitez les erreurs potentielles causées par des références croisées entre différentes feuilles, ce qui aurait pu être à l'origine du bug que vous avez rencontré. En résumé, votre compréhension est tout à fait correcte !

A plus !

1