erreur VBA 1004... encore une..

Le
fuzzy
Bonjour,

Ci-joint le code d'une macro déclarée dans un module, j'ai une erreur
1004 systématiquement à la ligne ou l'on affecte une valeur à "cible"

J'ai essayé de déclarer cette variable ou non, j'ai essayé de mettre
ou non le nom de la sheet devant les ranges, sans succès => si qqun
a une idée,

Merci,
FreD.

Sheets("différences données").Activate
For k = 10 To line_planning
If Sheets("différences données").Range(Cells(k, 9), Cells(k,
9)).Value = "NOK" Then
cible = Sheets("planning").Range(Cells(k, 6))
colorie cible
End If
Next
Vidéos High-Tech et Jeu Vidéo
Téléchargements
Vos réponses
Gagnez chaque mois un abonnement Premium avec GNT : Inscrivez-vous !
Trier par : date / pertinence
MichDenis
Le #4815461
Utilise cette synntaxe :

cible = Sheets("planning").Range(Sheets("planning").Cells(k, 6))

Ou ceci :

With Sheets("planning")
cible = .Range(.Cells(k, 6))
End if





"fuzzy"
Bonjour,

Ci-joint le code d'une macro déclarée dans un module, j'ai une erreur
1004 systématiquement à la ligne ou l'on affecte une valeur à "cible"

J'ai essayé de déclarer cette variable ou non, j'ai essayé de mettre
ou non le nom de la sheet devant les ranges,... sans succès => si qqun
a une idée,

Merci,
FreD.

Sheets("différences données").Activate
For k = 10 To line_planning
If Sheets("différences données").Range(Cells(k, 9), Cells(k,
9)).Value = "NOK" Then
cible = Sheets("planning").Range(Cells(k, 6))
colorie cible
End If
Next
fuzzy
Le #4815431
..même punition au même endroit avec les 2 solutions.. une autre
idée ?
(c'est vraiment une galère cette erreur...)

On 30 juil, 14:52, "MichDenis"
Utilise cette synntaxe :

cible = Sheets("planning").Range(Sheets("planning").Cells(k, 6))

Ou ceci :

With Sheets("planning")
cible = .Range(.Cells(k, 6))
End with



Modeste
Le #4815421
Bonsour® fuzzy avec ferveur ;o))) vous nous disiez :

..même punition au même endroit avec les 2 solutions.. une autre
idée ?
(c'est vraiment une galère cette erreur...)


pourquoi pas simplement :
cible = Sheets("planning").Cells(k, 6)

@+
;o)))

fuzzy
Le #4815411
Par acquis de conscience j'ai voulu voir si c'était l'affectation qui
posait pb mais non c'est tout bêtement la sélection de la cellule..

donc un simple :
Sheets("planning").Range(Cells(k, 6)).Select
ou
Sheets("planning").Range(Cells(k, 6);Cells(k, 6)).Select ou
Sheets("planning").Range(sheets("planning").Cells(k, 6)).Select ....

ne fonctionne pas.. (ARGHHHHHHHHHH)
News CI
Le #4815391
Bonjour Fred,

Essaye d'activer la feulle planning avant ton affectation par :
Sheets("planning").Activate

Si cible va contenir un objet Range, il faut mettre Set avant.
L'affectation va devenir (en simplifiant aussi) :
set cible = Sheets("planning").Cells(k, 6)

Salutations,

François,


"fuzzy"
Bonjour,

Ci-joint le code d'une macro déclarée dans un module, j'ai une erreur
1004 systématiquement à la ligne ou l'on affecte une valeur à "cible"

J'ai essayé de déclarer cette variable ou non, j'ai essayé de mettre
ou non le nom de la sheet devant les ranges,... sans succès => si qqun
a une idée,

Merci,
FreD.

Sheets("différences données").Activate
For k = 10 To line_planning
If Sheets("différences données").Range(Cells(k, 9), Cells(k,
9)).Value = "NOK" Then
cible = Sheets("planning").Range(Cells(k, 6))
colorie cible
End If
Next
fuzzy
Le #4815351
En effet avec cette solution je n'ai plus l'erreur 1004 mais la 91 :
"variable objet ou variable de bloc non définie"

Du coup j'ai fait un set de ma variable juste après la déclaration :
Set cible = Range("A1")

et cela fonctionne !! (enfin ça fait un peu bidouille..)

En tout cas merci pour vos idées !



On 30 juil, 15:33, "Modeste"
Bonsour® fuzzy avec ferveur ;o))) vous nous disiez :

..même punition au même endroit avec les 2 solutions.. une autre
idée ?
(c'est vraiment une galère cette erreur...)


pourquoi pas simplement :
cible = Sheets("planning").Cells(k, 6)

@+
;o)))



MichDenis
Le #4815281
Effectivement il y avait une coquille dans le code proposée,

With Sheets("planning")
Cible = .Range(.Cells(k, 6).Address)
End With
OU

Cible = Sheets("planning").Range(Sheets("planning").Cells(k, 6).Address)

Explication : L'objet Range demande une adresse pour retourner la valeur
d'une cellule et non la valeur d'une cellule. J'avais omis de
spécifier la propriété Address au deux lignes de code.

La valeur de la propriété par défaut d'un objet range est "Value" et non "Address".

;-))






"MichDenis" %
Utilise cette synntaxe :

cible = Sheets("planning").Range(Sheets("planning").Cells(k, 6))

Ou ceci :

With Sheets("planning")
cible = .Range(.Cells(k, 6))
End if





"fuzzy"
Bonjour,

Ci-joint le code d'une macro déclarée dans un module, j'ai une erreur
1004 systématiquement à la ligne ou l'on affecte une valeur à "cible"

J'ai essayé de déclarer cette variable ou non, j'ai essayé de mettre
ou non le nom de la sheet devant les ranges,... sans succès => si qqun
a une idée,

Merci,
FreD.

Sheets("différences données").Activate
For k = 10 To line_planning
If Sheets("différences données").Range(Cells(k, 9), Cells(k,
9)).Value = "NOK" Then
cible = Sheets("planning").Range(Cells(k, 6))
colorie cible
End If
Next
Modeste
Le #4814891
Bonsour® fuzzy avec ferveur ;o))) vous nous disiez :

En effet avec cette solution je n'ai plus l'erreur 1004 mais la 91 :
"variable objet ou variable de bloc non définie"

Du coup j'ai fait un set de ma variable juste après la déclaration :
Set cible = Range("A1")

et cela fonctionne !! (enfin ça fait un peu bidouille..)


j'en conclue donc comme l'avait bien deviné Denis
que la variable Cible contient une adresse et non une valeur de cellule
par l'utilisation de l'instruction Set, Cible est déclaré par défaut en type
Variant
ce qui n'est pas trés heureux ici !!!

Pour éviter ce genre de errements lors du débuggage
il convient de prendre l'habitude d'ajouter en tete de chaque module
Option Explicit
pour cela , dans VBA Outils> Options>
Onglet Editeur
cocher : Déclaration des variables obligatoire

Définir chaque type de variable
Public (ou Private) Cible As Range

puis dans VBA Outils> Options>
Onglet général
activer : arret sur les erreur non gérées

@+
;o)))

Publicité
Poster une réponse
Anonyme