mimi_939
Messages postés50Date d'inscriptionvendredi 31 décembre 2004StatutMembreDernière intervention 3 août 2007
-
5 juil. 2007 à 15:16
JM247L
Messages postés443Date d'inscriptionmardi 27 mars 2007StatutMembreDernière intervention 1 mars 2011
-
5 juil. 2007 à 17:29
Bonjour,
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_939
Messages postés50Date d'inscriptionvendredi 31 décembre 2004StatutMembreDernière intervention 3 août 2007 5 juil. 2007 à 15:24
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_mik67
Messages postés39Date d'inscriptionmardi 12 octobre 2004StatutMembreDernière intervention13 juillet 2007 5 juil. 2007 à 15:34
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 :
JM247L
Messages postés443Date d'inscriptionmardi 27 mars 2007StatutMembreDernière intervention 1 mars 20112 5 juil. 2007 à 16:11
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_939
Messages postés50Date d'inscriptionvendredi 31 décembre 2004StatutMembreDernière intervention 3 août 2007 5 juil. 2007 à 16:14
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_939
Messages postés50Date d'inscriptionvendredi 31 décembre 2004StatutMembreDernière intervention 3 août 2007 5 juil. 2007 à 16:20
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_mik67
Messages postés39Date d'inscriptionmardi 12 octobre 2004StatutMembreDernière intervention13 juillet 2007 5 juil. 2007 à 16:24
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_939
Messages postés50Date d'inscriptionvendredi 31 décembre 2004StatutMembreDernière intervention 3 août 2007 5 juil. 2007 à 16:30
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_mik67
Messages postés39Date d'inscriptionmardi 12 octobre 2004StatutMembreDernière intervention13 juillet 2007 5 juil. 2007 à 16:34
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_939
Messages postés50Date d'inscriptionvendredi 31 décembre 2004StatutMembreDernière intervention 3 août 2007 5 juil. 2007 à 16:39
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_mik67
Messages postés39Date d'inscriptionmardi 12 octobre 2004StatutMembreDernière intervention13 juillet 2007 5 juil. 2007 à 16:43
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_mik67
Messages postés39Date d'inscriptionmardi 12 octobre 2004StatutMembreDernière intervention13 juillet 2007 5 juil. 2007 à 16:44
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
JM247L
Messages postés443Date d'inscriptionmardi 27 mars 2007StatutMembreDernière intervention 1 mars 20112 5 juil. 2007 à 16:45
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