IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Macros et VBA Excel Discussion :

Error VBA déclaration [XL-2010]


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Inscrit en
    Mai 2012
    Messages
    60
    Détails du profil
    Informations forums :
    Inscription : Mai 2012
    Messages : 60
    Par défaut Error VBA déclaration
    Bonjour le forum,

    Pourrait quelqu'un m'aider à corriger ce petit bout de programme ci-dessous svp?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    Public Sub test()
     
    Dim NbLigne, i, j As Integer
    Dim sas, toto As String
     
    Set toto = Workbooks("\\....\toto.xlsm").Worksheets("RECUP")
    l'error afficher(au niveau de la SET toto) : Objet requis



    Merci d'avance de votre aide!

  2. #2
    Expert confirmé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2013
    Messages
    3 609
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Alimentation

    Informations forums :
    Inscription : Mai 2013
    Messages : 3 609
    Par défaut
    Dans tes déclarations, tu dois mettre As Integer (ou autre) à chaque variable sinon ce seront des Variant par défaut

    Tu dois donner une cellule à ton appel
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Set toto = Workbooks("\\....\toto.xlsm").Worksheets("RECUP").Range("A2")
    Et lorsque tu travailles avec des lignes (ex: NbLigne), déclare-les en Long parce que tu vas avoir des erreurs de dépassement de capacité éventuellement...

  3. #3
    Invité
    Invité(e)
    Par défaut
    Salut,

    Worksheets("xxxx") est équivalent à Worksheets.item("xxxx")
    L'item d'une collection est un object. Tu dois au minimum typer "toto" As Variant ou Object. D'ailleurs, cela va avec le "Set".
    Pour les autres variables, c'est "Let", mais il est est généralement omis car il est optionel sauf pour les propriétés "Property Let".
    Le typage le plus fort est "As Worksheet"

    Dim toto As Worksheet
    Dernière modification par Invité ; 05/12/2013 à 17h40.

  4. #4
    Expert confirmé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2013
    Messages
    3 609
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Alimentation

    Informations forums :
    Inscription : Mai 2013
    Messages : 3 609
    Par défaut
    Oups... bien vu Nouveau2...
    J'avais oublié d'enlever le Set étant donné que c'était une simple String

  5. #5
    Invité
    Invité(e)
    Par défaut
    Ben c'est bien aussi de l'avoir dit , vu que certains exemples (assez rare quand même) sont fait avec les même lignes de codes que présenté idhmida.
    Dû au fait que les autres languages de programmation peuvent le faire (la déclaration de toutes les variables de même type sur une même ligne en ne spécifiant qu'un seul type) , mais pas le VBA.

  6. #6
    Membre confirmé
    Inscrit en
    Mai 2012
    Messages
    60
    Détails du profil
    Informations forums :
    Inscription : Mai 2012
    Messages : 60
    Par défaut l'erreur persiste
    Bonjour,

    Merci pour vos réponses, cependant le code ne marche toujours pas, je l'ai modifié comme vous avez suggéré comme suit :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    Public Sub test()
     
    Dim i As Integer
    Dim NbLigne As Integer
    Dim j As Long
    Dim sas As Worksheet
    Dim toto As Worksheet
     
    Set toto = Workbooks("\\...\toto.xlsm").Worksheets("RECUP")
     
    Workbook.Open ("\\...\Surfacefin.xls")
    Set sas = Workbooks("Surfacefin.xls").Worksheets("SURFACEFIN")
    L'erreur persiste au niveau de toto = workbooks, le message d'erreur est : l'indice n'appartient pas à la sélection.

    Auriez vous une idée pour le corriger svp?

    Merci beaucoup!!!

  7. #7
    Expert confirmé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2013
    Messages
    3 609
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Alimentation

    Informations forums :
    Inscription : Mai 2013
    Messages : 3 609
    Par défaut
    Est-ce que le fichier Toto est ouvert ?

  8. #8
    Membre confirmé
    Inscrit en
    Mai 2012
    Messages
    60
    Détails du profil
    Informations forums :
    Inscription : Mai 2012
    Messages : 60
    Par défaut
    Oui, en fait le module VBA est crée dans le fichier toto

  9. #9
    Expert éminent
    Avatar de Marc-L
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2013
    Messages
    9 468
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2013
    Messages : 9 468
    Par défaut

    Bonjour,

    Set Toto = ThisWorkbook.Worksheets("RECUP")

    Faut-il encore que la feuille existe !

  10. #10
    Membre confirmé
    Inscrit en
    Mai 2012
    Messages
    60
    Détails du profil
    Informations forums :
    Inscription : Mai 2012
    Messages : 60
    Par défaut
    Bonjour,

    Le problème n'est toujours pas résolu, j'ai essayé avec le code suivant qui me parait plus logique que l'ancien code, mais toujours pas ok...

    Quelqu'un aurait une idée svp?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
    Public Sub test()
     
    Dim i As Integer, NbLigne As Long, j As Long
     
    Dim toto As Workbook, sas As Workbook
    Dim recup As Worksheet, surface As Worksheet
     
    Const ref As Date = "01/01/2013"
     
    toto = Workbooks("toto.xlsm")
    recup = toto.Worksheets("RECUP")
     
    End sub

    Merci d'avance

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [VBA]Déclaration de variables
    Par domik dans le forum VBA Access
    Réponses: 6
    Dernier message: 01/04/2007, 20h24
  2. [VBA][recordset]pb update error 3061 too few parameters
    Par megapacman dans le forum Access
    Réponses: 2
    Dernier message: 23/03/2006, 16h11
  3. [VBA-E] Structure de On Error
    Par skual dans le forum Macros et VBA Excel
    Réponses: 6
    Dernier message: 21/03/2006, 16h17
  4. [vba][Array]pb compile error
    Par megapacman dans le forum Access
    Réponses: 2
    Dernier message: 18/03/2006, 09h24
  5. Réponses: 9
    Dernier message: 08/03/2006, 16h04

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo