Erreur "subscript out of range"

Résolu
znort25x12 Messages postés 6 Date d'inscription lundi 25 mars 2013 Statut Membre Dernière intervention 22 janvier 2014 - 22 janv. 2014 à 11:02
znort25x12 Messages postés 6 Date d'inscription lundi 25 mars 2013 Statut Membre Dernière intervention 22 janvier 2014 - 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
A voir également:

11 réponses

ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 211
Modifié par ucfoutu le 22/01/2014 à 11:15
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
0
znort25x12 Messages postés 6 Date d'inscription lundi 25 mars 2013 Statut Membre Dernière intervention 22 janvier 2014
22 janv. 2014 à 11:54
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.
0
ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 211
22 janv. 2014 à 12:00
"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.
0
znort25x12 Messages postés 6 Date d'inscription lundi 25 mars 2013 Statut Membre Dernière intervention 22 janvier 2014
22 janv. 2014 à 12:03
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.
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 211
22 janv. 2014 à 13:14
Eh bien non !
Il va te falloir donc corriger tout cela.
0
jordane45 Messages postés 38145 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 25 avril 2024 344
22 janv. 2014 à 13:33
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!
0
jordane45 Messages postés 38145 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 25 avril 2024 344
22 janv. 2014 à 13:34
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 ??
0
znort25x12 Messages postés 6 Date d'inscription lundi 25 mars 2013 Statut Membre Dernière intervention 22 janvier 2014
22 janv. 2014 à 13:45
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.
0
jordane45 Messages postés 38145 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 25 avril 2024 344
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.
0
znort25x12 Messages postés 6 Date d'inscription lundi 25 mars 2013 Statut Membre Dernière intervention 22 janvier 2014
22 janv. 2014 à 14:07
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
0
cs_Jack Messages postés 14006 Date d'inscription samedi 29 décembre 2001 Statut Modérateur Dernière intervention 28 août 2015 79
22 janv. 2014 à 16:16
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.
0
znort25x12 Messages postés 6 Date d'inscription lundi 25 mars 2013 Statut Membre Dernière intervention 22 janvier 2014
22 janv. 2014 à 16:29
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
0
Rejoignez-nous