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

Signaler
Messages postés
6
Date d'inscription
lundi 25 mars 2013
Statut
Membre
Dernière intervention
22 janvier 2014
-
znort25x12
Messages postés
6
Date d'inscription
lundi 25 mars 2013
Statut
Membre
Dernière intervention
22 janvier 2014
-
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

Messages postés
18038
Date d'inscription
lundi 7 décembre 2009
Statut
Modérateur
Dernière intervention
11 avril 2018
220
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
Messages postés
6
Date d'inscription
lundi 25 mars 2013
Statut
Membre
Dernière intervention
22 janvier 2014

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.
Messages postés
18038
Date d'inscription
lundi 7 décembre 2009
Statut
Modérateur
Dernière intervention
11 avril 2018
220
"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.
Messages postés
6
Date d'inscription
lundi 25 mars 2013
Statut
Membre
Dernière intervention
22 janvier 2014

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.
Messages postés
18038
Date d'inscription
lundi 7 décembre 2009
Statut
Modérateur
Dernière intervention
11 avril 2018
220
Eh bien non !
Il va te falloir donc corriger tout cela.
Messages postés
28098
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
8 avril 2020
325
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!
Messages postés
28098
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
8 avril 2020
325
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 ??
Messages postés
6
Date d'inscription
lundi 25 mars 2013
Statut
Membre
Dernière intervention
22 janvier 2014

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
Messages postés
28098
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
8 avril 2020
325
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.
Messages postés
6
Date d'inscription
lundi 25 mars 2013
Statut
Membre
Dernière intervention
22 janvier 2014

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
Messages postés
14008
Date d'inscription
samedi 29 décembre 2001
Statut
Modérateur
Dernière intervention
28 août 2015
65
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.
Messages postés
6
Date d'inscription
lundi 25 mars 2013
Statut
Membre
Dernière intervention
22 janvier 2014

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