mimi_93950
Messages postés vendredi 31 décembre 2004Date d'inscription
3 août 2007
Dernière intervention
-
5 juil. 2007 à 15:16 - Dernière réponse : JM247L444
Messages postés mardi 27 mars 2007Date d'inscription
1 mars 2011
Dernière intervention
- 5 juil. 2007 à 17:29
j'ai une question dont la réponse est probablement très simple mais comme je suis débutante en vba, ça ne me saute pas aux yeux.
Je suis en train de développer un module.
Dans ce module, j'ai besoin de récupérer la valeur d'une cellule excel contenu dans une feuille du classeur. Cette feuille n'est pas active lors du traitement.
J'ai tout simplement fait :
source = Sheets("feuil1").Range("F" & x).Value
Cependant lorsque que j'exécute le traitement, j'ai une erreur :
Erreur d'exécution '9'
L'indice n'appartient pas à la sélection
mimi_93950
Messages postés vendredi 31 décembre 2004Date d'inscription
3 août 2007
Dernière intervention - 5 juil. 2007 à 15:24
0
Utile
J'ai mis "feuil1" comme exemple mais dans mon module j'ai mis le nom de la feuille existante et x a bien une valeur correcte
C'est pour ça que je ne comprends pas!
Où aurais je commis une erreur ,
cs_mik6740
Messages postés mardi 12 octobre 2004Date d'inscription
13 juillet 2007
Dernière intervention - 5 juil. 2007 à 15:34
0
Utile
Essaye de découper ton instruction et utilise le pas-à-pas pour tester tes valeurs en mettant un point d'arret (ou une messageBox). Je tenterais quelque chose du genre :
Si tu considère que "l'undice x a toujours une valeur correcte", le système, d'après le message d'erruer, semble considérer différemment
A mon avis si tu ne donnes pas plus de code et entre autre celui ou "x" prend une valeur on aura du mal à t'aider
mimi_93950
Messages postés vendredi 31 décembre 2004Date d'inscription
3 août 2007
Dernière intervention - 5 juil. 2007 à 16:14
0
Utile
Voila le code de mon module :
Sub DateDebutFais()
Dim x As Integer
Dim source1 As String
Dim marge As Integer
'Dim dateJour As Date
marge = 10 'Paramétrages
For x = 6 To 31
Feuil3.Range("F" & x).Select
source1 = ActiveCell.Value
'source1 = Application.Sheets("Etats de Pilotage").Range("F" & x).Value
If InStr(source1, ThisWorkbook.source) > 0 Then
Range("AC" & x).Value = Range("AC" & x).Value + marge
End If
Next x
End Sub
mimi_93950
Messages postés vendredi 31 décembre 2004Date d'inscription
3 août 2007
Dernière intervention - 5 juil. 2007 à 16:20
0
Utile
Avec tous ls tests que j'ai effectué, il semblerait que le x ne soit pas en cause.
Mais vu mon niveau de débutante, je ne peux pas l'affirmer.
Merci pour votre aide.
cs_mik6740
Messages postés mardi 12 octobre 2004Date d'inscription
13 juillet 2007
Dernière intervention - 5 juil. 2007 à 16:24
0
Utile
J'ai testé chez moi juste au niveau du Feuil3.Range("F" & x).Select ....ca tourne nikel
Par contre je vois ce que tu veux faire avec ThisWorkbook.source parce que ça génère une erreur chez moi
mimi_93950
Messages postés vendredi 31 décembre 2004Date d'inscription
3 août 2007
Dernière intervention - 5 juil. 2007 à 16:30
0
Utile
source est une variable que j'ai déclaré dans ThisWorkbook et que j'utilise dans ce module.
Mais tout à l'heure, tout a marché, c'est pour ça que je ne comprends pas pourquoi maintenant ça plante!
Je m'excuse si mes explications ne sont pas claires, j'essaie de faire au mieux.
cs_mik6740
Messages postés mardi 12 octobre 2004Date d'inscription
13 juillet 2007
Dernière intervention - 5 juil. 2007 à 16:34
0
Utile
Tu veux nous expliquer le principe global de tes instructions s'il te plait ?
A quel resultat veux tu arriver ?
Donne nous un exemple qu'on puisser 'cerner' le problème et voir éventuellement s'il n'y aurait pas une autre solution envisageable
mimi_93950
Messages postés vendredi 31 décembre 2004Date d'inscription
3 août 2007
Dernière intervention - 5 juil. 2007 à 16:39
0
Utile
Sub DateDebutFais()
Dim x As Integer
Dim source1 As String
Dim marge As Integer
'Dim dateJour As Date
marge = 10 'Paramétrages
For x = 6 To 31
Feuil3.Range("F" & x).Select
source1 = ActiveCell.Value
// je récupère la valeur de la cellule de la colonne F et de la feuille Feuil3 et veux savoir si cette valeur 5de type String) contient une chaîne de caractères(ThisWorkbook.source). Si elle est contenue alors je modifie la valeur d'une cellule de la même feuille Feuil3
'source1 = Application.Sheets("Etats de Pilotage").Range("F" & x).Value
If InStr(source1, ThisWorkbook.source) > 0 Then
Range("AC" & x).Value = Range("AC" & x).Value + marge
End If
Next x
End Sub
cs_mik6740
Messages postés mardi 12 octobre 2004Date d'inscription
13 juillet 2007
Dernière intervention - 5 juil. 2007 à 16:43
0
Utile
1/ Est-ce que ThisWorkbook.source a effectivement une valeur ? (est ce que tu passes par un point d'arret ou une boite de dialogue (MessageBox) pour t'assurer que cette valeur existe?)
2/ Range("AC" & x) : tu fusionne les colonnes A et C dans cette instruction ?
cs_mik6740
Messages postés mardi 12 octobre 2004Date d'inscription
13 juillet 2007
Dernière intervention - 5 juil. 2007 à 16:44
0
Utile
Quand tu dis que ta feuille se "nomme" c'est de l'onglet de ton classeur Excel que tu parles ? Si c'est le cas ta feuille s'appelle toujours implicitement Feuil3
Tu as bien déclaré Source1 mais pas Source
de plus si Source est une variable ou la prend elle (sa source)
ThisWorkbook n'a pas la propriété de ActiveWorkbook ...
JML
Partageons notre savoir et nos acquis