Problème d'erreur

Résolu
UrbanSyphon Messages postés 22 Date d'inscription jeudi 3 juillet 2008 Statut Membre Dernière intervention 17 juin 2009 - 28 juil. 2008 à 17:17
UrbanSyphon Messages postés 22 Date d'inscription jeudi 3 juillet 2008 Statut Membre Dernière intervention 17 juin 2009 - 29 juil. 2008 à 14:18
Bonjour
lors de l'execution de mon programme j'ai l'erreur "l indice est en dehors de la plage" et je ne comprend pas pourquoi je vais donc vous donner le morceau de code qui provoque cette erreur
pourriez vous m'aider à la resoudre merci

Private Sub Option2_Click()



Dim y As Integer                                                   'declaration de la variable a incrementer
                                                                             'qui correspond y la valeur de la ligne
                                                   
Dim data As String                                                 ' declaration de la variable qui prendra comme
                                                                               'valeur le contenu de la cellule
Dim monclasseur As Excel.Workbook                   'declaration d'une variable comme classeur excel
Set monclasseur = Workbooks.Open("z:\stages\X_XXXXXX\compacteurs2_vm.xls")     'qui prendra comme valeur le fichier test.xls placé dans z
                                                   
    y = 1                                           'attribution de la valeur "1" à "y"
   
suite:                                              'debut d'un sous programme appele suite
        y = y + 1                                   'incremente "y" de "1"
        data = Sheets("données").Range("B" & y)     'place la valeur de la cellule de colonne "B" et de
                                                              'ligne "y" dans "data"
        If data = "" Then GoTo fin                  'si la cellule est vide alors on saute à fin
        Combo3.AddItem data                         'on ajoute le contenu de "data" dans le combo3
    
        GoTo suite                                  'on retourne au sous prog "suite"
       
fin:                                                'début d'un sous prog appele "fin
Workbooks.Close

End Sub


le tableau excel comporte + de400 lignes et 15 colonnes.
Merci pour l'aide que vous m apporterez





Nous entrainerons nos coeurs et nos corps afin d'acquérir un esprit sans faiblesse.
 .:Vive le Shidokan:.

9 réponses

cs_eldim Messages postés 956 Date d'inscription lundi 30 mai 2005 Statut Membre Dernière intervention 21 août 2014 1
28 juil. 2008 à 17:36
Bonjour,

évite les goto et remplace ça par des while déja ce sera plus clair...
ensuite n'oublie pas de préciser le classer dans ton appel : data = Sheets("données").Range("B" & y) 
sinon tu es toujours dans ton classeur de départ...
également quand tu travailles avec des lignes dans excel il faut passer par un long et non un integer... sous peine de dépassement de capacité

surtout précise le classeur que tu fermes (à mon avis le problème vient de là) :  Workbooks.Close
à remplacer : monclasseur.close

-- Pourquoi faire simple quand on peut faire compliquer --
3
PCPT Messages postés 13272 Date d'inscription lundi 13 décembre 2004 Statut Membre Dernière intervention 3 février 2018 47
28 juil. 2008 à 18:53
thème topic : déplacé de VB6 vers VBA !!!!!!!

pour le problème...., OUT OUF RANGE à l'air assez clair ; la ligne pour y n'est pas infinie...
<hr size="2" width="100%" />Prenez un instant pour répondre à [infomsg_SONDAGE-POP3-POUR-CS_769706.aspx ce sondage] svp  
0
UrbanSyphon Messages postés 22 Date d'inscription jeudi 3 juillet 2008 Statut Membre Dernière intervention 17 juin 2009
29 juil. 2008 à 09:10
Bonjour eldim j' ai regardé ce que tu m' as proposé et j'ai changé des partie de mon code mais il y a un problème, toujour d indice en dehors de la plage sur cette ligne de code : "data = Sheets("données").Range("B" & y)" et dans ton explication je ne vois pas trop ce que tu veux dire avec "ensuite n'oublie pas de préciser le classer dans ton appel " je te remercie déjà de l'aide que tu m as fourni et si tu peux encore perdre un peu de temps pour finaliser ce problème j'en serai ravi merci

Nous entrainerons nos coeurs et nos corps afin d'acquérir un esprit sans faiblesse.
 .:Vive le Shidokan:.
0
UrbanSyphon Messages postés 22 Date d'inscription jeudi 3 juillet 2008 Statut Membre Dernière intervention 17 juin 2009
29 juil. 2008 à 09:18
bonjour PCPT
Merci de l'intérrêt que tu me porte mais je ne comprend pas du tous ce que tu veux me die je commence à peine la prog donc si tu pouvais être un peu plus claire pour un débutant ca serai sympa merci d'avance

Nous entrainerons nos coeurs et nos corps afin d'acquérir un esprit sans faiblesse.
 .:Vive le Shidokan:.
0

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

Posez votre question
cs_eldim Messages postés 956 Date d'inscription lundi 30 mai 2005 Statut Membre Dernière intervention 21 août 2014 1
29 juil. 2008 à 09:32
Dim monclasseur As Excel.Workbook  


Set monclasseur = Workbooks.Open("z:\stages\X_XXXXXX\compacteurs2_vm.xls")
dim Y as long
y=1
while len(trim$(monclasseur.Sheets("données").Range("B" & y).value))>0 and y<65535
   Combo3.AddItem monclasseur.Sheets("données").Range("B" & y).value
   y=y+1
wend
monclasseur.Close
-- Pourquoi faire simple quand on peut faire compliquer --
0
UrbanSyphon Messages postés 22 Date d'inscription jeudi 3 juillet 2008 Statut Membre Dernière intervention 17 juin 2009
29 juil. 2008 à 09:46
IL y a toujours le problème d'erreur je comprend pas pourquoi il y a peut etre un problem de configuration? le problem est sur cette ligne : "while len(trim$(monclasseur.Sheets("données").Range("B" & y).value))>0 and y<65535"

Nous entrainerons nos coeurs et nos corps afin d'acquérir un esprit sans faiblesse.
 .:Vive le Shidokan:.
0
cs_eldim Messages postés 956 Date d'inscription lundi 30 mai 2005 Statut Membre Dernière intervention 21 août 2014 1
29 juil. 2008 à 11:01
en pas à pas ça donne koi ? (F8)
il y a plusieurs passages dans la boucle ou il plante dès le premier ? (as-tu bien vérifié que ta feuille "données" existe dans "monclasseur" ?)

-- Pourquoi faire simple quand on peut faire compliquer --
0
UrbanSyphon Messages postés 22 Date d'inscription jeudi 3 juillet 2008 Statut Membre Dernière intervention 17 juin 2009
29 juil. 2008 à 13:48
Désolé eldim de t avoir dérangé avec cette dernière question l'erreur été une faute d'étourderie j avais complètement oublié de mettre le nom de ma feuille excel dans"Sheets("données").Range("B" & y)  " elle ne s apellé pas données je mettais trompé mais je te remercie pour l'aide précieuse que tu m as apporté
merci encore et a+

Nous entrainerons nos coeurs et nos corps afin d'acquérir un esprit sans faiblesse.
 .:Vive le Shidokan:.
0
UrbanSyphon Messages postés 22 Date d'inscription jeudi 3 juillet 2008 Statut Membre Dernière intervention 17 juin 2009
29 juil. 2008 à 14:18
Désolé de te dérangé à nouveau mais je rencontre un autre problème je n'arrive pas a utiliser les valeurs des autres colonnes de ma base de donnée excel  suivant le choix que j' ai fait dans ma combobox que l on vient de remplir d'une colonne de la base de donnée

Nous entrainerons nos coeurs et nos corps afin d'acquérir un esprit sans faiblesse.
 .:Vive le Shidokan:.
0
Rejoignez-nous