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
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
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
idée ?
(c'est vraiment une galère cette erreur...)
On 30 juil, 14:52, "MichDenis"
pourquoi pas simplement :
cible = Sheets("planning").Cells(k, 6)
@+
;o)))
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)
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
"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"
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
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)))