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 :

Mon code ne fonctionne pas


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Homme Profil pro
    Financier
    Inscrit en
    Juillet 2019
    Messages
    41
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Financier

    Informations forums :
    Inscription : Juillet 2019
    Messages : 41
    Par défaut Mon code ne fonctionne pas
    Salut tout le monde, je me permets de poster car je ne comprends pas pourquoi mon code ne fonctionne pas ... Je souhaite simplement copier/coller une feuille d'un classeur à l'autre or j'ai toujours la même erreur : indice n'appartient pas à la selection ( https://docs.microsoft.com/fr-fr/off...-range-error-9 )

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    Sub CopierFeuille()
     
    Workbooks("ok.xlsx").Worksheets(1).Range("A2:C8").Copy _
    Workbooks("Classeur1.xlsx").Worksheets(2).Range("A2")
     
     
    End Sub
    Si quelqu'un peut me corriger et surtout m'expliquer pourquoi mon code est mauvais , j'aimerais vraiment progresser ...

  2. #2
    Membre Expert
    Homme Profil pro
    Retraité
    Inscrit en
    Avril 2011
    Messages
    1 858
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Avril 2011
    Messages : 1 858
    Par défaut
    Bonjour,

    As-tu vérifié que le classeur "Classeur1.xlsx" a bien 2 feuilles ?

    Cordialement.

  3. #3
    Membre averti
    Homme Profil pro
    Financier
    Inscrit en
    Juillet 2019
    Messages
    41
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Financier

    Informations forums :
    Inscription : Juillet 2019
    Messages : 41
    Par défaut
    Hello , oui j'ai vérifié , il a bien 2 feuilles.

  4. #4
    Membre expérimenté
    Homme Profil pro
    Étudiant
    Inscrit en
    Octobre 2018
    Messages
    254
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 29
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Octobre 2018
    Messages : 254
    Par défaut
    Bonjour,

    Dans tes 2 lignes, tu fais références à des feuilles par leur Index. Sauf que ceux-ci ne sont pas forcément correct si jamais tu as fait des insertions ou des suppressions de feuilles dans ton classeur.

    Pour sécuriser ça, appelles plutôt ta feuille par son "Nom"

  5. #5
    Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Juillet 2019
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 28
    Localisation : France, Doubs (Franche Comté)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Juillet 2019
    Messages : 4
    Par défaut
    Bonjour,
    toutes tes feuilles sont bien des feuilles de calculs ? Si non tu dois les appeler en tant que Sheets et non Worksheets.
    https://www.developpez.net/forums/d6...ts-worksheets/
    Sinon il me semble que la syntaxe est bonne :/
    En espérant pouvoir t'aider

  6. #6
    Membre Expert
    Homme Profil pro
    Retraité
    Inscrit en
    Avril 2011
    Messages
    1 858
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Avril 2011
    Messages : 1 858
    Par défaut
    Es-tu sûr que les 2 classeurs ont une extension "xlsx" ?
    Dans quel classeur se trouve la macro ?

    Cordialement.

  7. #7
    Membre averti
    Homme Profil pro
    Financier
    Inscrit en
    Juillet 2019
    Messages
    41
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Financier

    Informations forums :
    Inscription : Juillet 2019
    Messages : 41
    Par défaut
    Merci à tous, ma macro se trouvait dans le classeur1

    Il semblerait que l'erreur vienne du fait que je n'avais pas encore enregistré le classeur1 , est ce possible que soit la cause ? Une fois enregistré cela fonctionnait.

    J'aimerais aussi poser une question , quelqu'un pourrait m'expliquer comment simplifier ceci (je l'ai crée, ca fonctionne très bien mais j'ai l'impression que c'est mega lourd) :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    Worksheets("Janvier").Range("C5").Copy
    Worksheets("synthese").Range("B2").PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
            :=False, Transpose:=False
    Worksheets("Février").Range("C5").Copy
    Worksheets("synthese").Range("B3").PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
            :=False, Transpose:=False
    Worksheets("Mars").Range("C5").Copy
    Worksheets("synthese").Range("B4").PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
            :=False, Transpose:=False
    Worksheets("Avril").Range("C5").Copy
    Worksheets("synthese").Range("B5").PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
            :=False, Transpose:=False
    Worksheets("Mai").Range("C5").Copy
    Worksheets("synthese").Range("B6").PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
            :=False, Transpose:=False
    Worksheets("Juin").Range("C5").Copy
    Worksheets("synthese").Range("B7").PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
            :=False, Transpose:=False
    Il n'est pas possible d'utiliser un WITH Worksheets et à chaque ligne renseigner le nom de la feuille ? Je n'ai pas réussi

    PS : mon but ici est d'aller cherche dans les cellules des differentes worksheets des valeurs que j'importe dans la feuille synthese (uniquement en valeur, pas de formules .... ).

    Merci à tout ceux qui ont repondu.

  8. #8
    Expert confirmé
    Homme Profil pro
    Responsable des études
    Inscrit en
    Juillet 2014
    Messages
    2 680
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Aude (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Responsable des études
    Secteur : Santé

    Informations forums :
    Inscription : Juillet 2014
    Messages : 2 680
    Par défaut
    Citation Envoyé par VBANoJutsu Voir le message
    Si quelqu'un peut me corriger et surtout m'expliquer pourquoi mon code est mauvais , j'aimerais vraiment progresser ...
    Bonjour,

    "l'indice n'appartient pas à la selection" veut dire qu'il ne trouve pas soit l'un de tes classeurs soit l'une des feuilles
    Vu que tu as écris ton code sur une seule ligne (ce qui est très bien, quand ça marche) il plus dur de trouver où se trouve l'erreur
    Je te propose donc de le décomposer pour trouver quel classeur/feuille pose problème, lance le code ci-dessous et dis nous où l'erreur apparait:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    Workbooks("ok.xlsx").activate
    Worksheets(1).activate
    Workbooks("Classeur1.xlsx").activate
    Worksheets(2).activate
    Il devrait planté dès la première ligne, en effet il ne faut pas mettre l'extension du fichier dans workbooks
    Essaye donc:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    Sub CopierFeuille()
     
    Workbooks("ok").Worksheets(1).Range("A2:C8").Copy _
    Workbooks("Classeur1").Worksheets(2).Range("A2")
     
     
    End Sub

Discussions similaires

  1. Réponses: 5
    Dernier message: 23/01/2009, 16h22
  2. mon code ne fonctionne pas
    Par zakaroh dans le forum C#
    Réponses: 31
    Dernier message: 04/08/2008, 14h19
  3. Mon code ne fonctionne pas mais pourquoi ?
    Par veriecherie dans le forum ASP
    Réponses: 3
    Dernier message: 01/08/2008, 12h19
  4. pourquoi mon code ne fonctionne pas
    Par jmlb35 dans le forum VBA Access
    Réponses: 2
    Dernier message: 30/06/2008, 19h02
  5. [MySQL] Mon code ne fonctionne pas correctement
    Par bebas dans le forum PHP & Base de données
    Réponses: 1
    Dernier message: 24/02/2007, 13h27

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