Erreur "subscript out of range" [Résolu]

znort25x12 6 Messages postés lundi 25 mars 2013Date d'inscription 22 janvier 2014 Dernière intervention - 22 janv. 2014 à 11:02 - Dernière réponse : znort25x12 6 Messages postés lundi 25 mars 2013Date d'inscription 22 janvier 2014 Dernière intervention
- 22 janv. 2014 à 16:29
bonjour à tous,
J'ai écrit le code suivant:

str_Body = "Hallo," _
& Chr(13) & "" _
& Chr(13) & "Anbei finden Sie unser IBD für die Transporten Emmmmmmm Ammmmm (MMM MMMMMMM)." _
& Chr(13) & "Umsatz = " & Sheets("IBD Transporten").Range("R37").Value & " " & Sheets("IBD UK transports").Range("q27").Value _
& Chr(13) & "" _
& Chr(13) & "" _
& Chr(13) & "Mit freundlichen Grüssen," _
& Chr(13) & "" _
& Chr(13) & "" _
& Chr(13) & Range("sCS").Offset(0, 2).Value & " " & Range("sCS").Offset(0, 1).Value _
& Chr(13) & "mmmmmmmm mmmm mmmmm mmmm mmmmmmmmm" _
& Chr(13) & Range("sCS").Offset(0, 3).Value _
& Chr(13) & "Tel: " & Range("sCS").Offset(0, 4).Value_


et je reçois l'erreur "subscript out of range"

Quelqu'un pourrait-il m'aider pour savoir où ça cloche, svp?
merci d'avo
Afficher la suite 

Votre réponse

12 réponses

ucfoutu 18039 Messages postés lundi 7 décembre 2009Date d'inscriptionContributeurStatut 11 avril 2018 Dernière intervention - Modifié par ucfoutu le 22/01/2014 à 11:15
0
Merci
Bonjour,
Il est vraisemblable que l'une de tes feuilles porte un nom différent de celui utilisé
Par ailleurs : la notation Range("sCS") est assez étrange.
si sCS est le nom que tu as donné à une plage, ce serait Range(sCS)
________________________
Réponse exacte ? => "REPONSE ACCEPTEE" facilitera les recherches.
Pas d'aide en ligne installée ? => ne comptez pas sur moi pour simplement répéter son contenu. Je n'interviend
Commenter la réponse de ucfoutu
znort25x12 6 Messages postés lundi 25 mars 2013Date d'inscription 22 janvier 2014 Dernière intervention - 22 janv. 2014 à 11:54
0
Merci
Merci Ucfoutu,

Effectivement, ma feuille "IBD UK transports" devait s'appeler "IBD Transporten". Mais une fois corrigée, j'ai maintenant un nouveau message au même endroit qui indique:
Object does not support this property or method.
J'ai déjà utilisé ce bout de code à maintes reprises et je ne vois pas où 4a pêche.
Commenter la réponse de znort25x12
ucfoutu 18039 Messages postés lundi 7 décembre 2009Date d'inscriptionContributeurStatut 11 avril 2018 Dernière intervention - 22 janv. 2014 à 12:00
0
Merci
"Mais une fois corrigée, j'ai maintenant un nouveau message au même endroit qui indique:
Object does not support this property or method."

J'attends ta réaction à mon autre observation ! (il y avait DEUX remarques dans mon message précédent ...)
Pour répondre, s'i_l te plait : n'utilise pas le tag "Commentaires", mais le tag "Répondre". Sinon on ne s'y retrouvera plus, dans le fil de cette discussion.
Commenter la réponse de ucfoutu
znort25x12 6 Messages postés lundi 25 mars 2013Date d'inscription 22 janvier 2014 Dernière intervention - 22 janv. 2014 à 12:03
0
Merci
Pardon...

effectivement, j'ai créé le nom SCS avec les guillemets. Comme je l'ai un peu partout dans mon programme, je dois le laisser comme ça.
Commenter la réponse de znort25x12
ucfoutu 18039 Messages postés lundi 7 décembre 2009Date d'inscriptionContributeurStatut 11 avril 2018 Dernière intervention - 22 janv. 2014 à 13:14
0
Merci
Eh bien non !
Il va te falloir donc corriger tout cela.
Commenter la réponse de ucfoutu
jordane45 21177 Messages postés mercredi 22 octobre 2003Date d'inscriptionContributeurStatut 25 mai 2018 Dernière intervention - 22 janv. 2014 à 13:33
0
Merci
Bonjour ucfoutu.
Par ailleurs : la notation Range("sCS") est assez étrange.
Il me semble bien qu'il peut utiliser cette notation pour faire appel à une plage nommée.

Exemple... si on crée une plage nommée : "Test"
Range("Test").Select

Ce code permettra de la selectionner.

Maintenant la question est de savoir si cette plage "sCS" existe bien.....

eventuellement il pourrait passer par un code de ce genre
Sub toto()

If TestPlageNommees("Test") = True Then
Range("Test").Select
End If
End Sub

Function TestPlageNommees(plageName As String) As Boolean
    Dim PlageNommees As Name
 
    For Each PlageNommees In ActiveWorkbook.Names
        If PlageNommees.Name = plageName Then T = True
    Next PlageNommees
    If T = True Then
        TestPlageNommees = True
    Else
         TestPlageNommees = False
    End If
End Function



Attention aux majuscules/minuscules.. la plage nommée doit être orthographiées correctement!
Commenter la réponse de jordane45
jordane45 21177 Messages postés mercredi 22 octobre 2003Date d'inscriptionContributeurStatut 25 mai 2018 Dernière intervention - 22 janv. 2014 à 13:34
0
Merci
effectivement, j'ai créé le nom SCS avec les guillemets.
... Question... c'est une plage nommée (dans une feuille excel) ou bien le nom d'une variable dans ton code vba ??
Commenter la réponse de jordane45
znort25x12 6 Messages postés lundi 25 mars 2013Date d'inscription 22 janvier 2014 Dernière intervention - 22 janv. 2014 à 13:45
0
Merci
SCS est un nom de plage qui me permet de sélectionner le nom de la personne qui va signer l'email. Suivant les initiales rentrées, cela va me chercher la ligne correspondante et me créer la signature avec les données trouvée sur la même ligne que Scs.
jordane45 21177 Messages postés mercredi 22 octobre 2003Date d'inscriptionContributeurStatut 25 mai 2018 Dernière intervention - 22 janv. 2014 à 13:58
Le tout est de savoir comment tu as déclaré cette plage ...
Via du code (vba) ou dans excel en utilisant les espaces de noms sur les cellules...
et puis... SCS <> Scs <> sCS.... attention !

Si tu as utilisé du code pour déclarer cette plage..montre le nous.
Commenter la réponse de znort25x12
znort25x12 6 Messages postés lundi 25 mars 2013Date d'inscription 22 janvier 2014 Dernière intervention - 22 janv. 2014 à 14:07
0
Merci
j'ai nommé la cellule sous excel.

Ensuite, le non Scs change de cellule suivant le résultat trouvé. Le résultat est cherché avec le code suivant (dans un autre module qui renvoie ensuite au module de création de l'email)

Sheets("DATA").Activate
Dim sFind
Dim nSearch5 As String
nSearch5 = Range("SalesTransportUK").Value

Set sFind = Sheets("DATA").Columns(20).Find(nSearch5, LookIn:=xlValues, MatchCase:=False)
If Not sFind Is Nothing Then
Range(sFind.Address).Name = "sCS"
Range("sCS").Select
Commenter la réponse de znort25x12
cs_Jack 14010 Messages postés samedi 29 décembre 2001Date d'inscriptionModérateurStatut 28 août 2015 Dernière intervention - 22 janv. 2014 à 16:16
0
Merci
Salut

Apparemment, il y a un _ final (à la fin de la dernière ligne) qui ne devrait pas être là.

Pour ce qui est des Range, je ne trouve pas cela choquant.
Avant d'insérer les Ranges dans ta chaine de caractères, affiche leur contenu dans la fenêtre de debug avant, exemple :
Debug.Print Sheets("IBD Transporten").Range("R37").Value
Faire de même avec tous tes ranges.
Cela permettra de savoir si c'est la structure ou le contenu qui pose problème.
Commenter la réponse de cs_Jack
znort25x12 6 Messages postés lundi 25 mars 2013Date d'inscription 22 janvier 2014 Dernière intervention - 22 janv. 2014 à 16:29
0
Merci
Merci beaucoup,

c'était effectivement le _ final qui génait.

et merci pour l'astuce avec le debug des range, ça m'évitera de perdre du temps à chercher les mauvaises causes
Commenter la réponse de znort25x12

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.