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 :

L'indice n'appartient pas à la sélection [XL-2010]


Sujet :

Macros et VBA Excel

  1. #1
    Candidat au Club
    Homme Profil pro
    Inscrit en
    Octobre 2013
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Octobre 2013
    Messages : 6
    Points : 3
    Points
    3
    Par défaut L'indice n'appartient pas à la sélection
    Bonjour à vous,

    J'ai besoin d'aide, je suis perdu. je suis complètement novice dans le VBA, après avoir fait un peu de code en prenant les infos un peu partout sur le net, jusqu'a maintenant tout c'était bien passé.
    Mais voila que je reprend un code que je me suis déjà servi et qui fonctionnait très bien, mais la il veut pas !!
    Le but du jeu étant de copier 2 cellules (c8 et d18) sur un classeur excel et de les remettre dans un autre classeur sur la première cellule vide d'un tableau.

    Donc voici mon code, il me donne le problème à la ligne avec le smile qui pleure
    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
    19
    20
    21
    22
    23
    Sub equipe1()
     
    Dim estouvertequipe1 As String
     
    estouvertequipe1 = False
    For Each fich In Workbooks
    If fich.Name = "equipe 1.xlsx" Then estouvertequipe1 = True
    Next
    If estouvertequipe1 = False Then Workbooks.Open ("C:\VENDANGE\2013\vendangeur\equipe 1.xlsx")
    Windows("LIVREUR.xlsm").Activate
    Dim w As Integer
    Dim wh As Worksheet
     
     Set wh = Workbooks("LIVREUR").Sheets("BL")
     
     With wh1
      w = Workbooks("equipe 1.xlsx").Sheets("TOTAL KG").Range("o50").End(xlUp)(2).Row ' << ---------  :cry: 
         Workbooks("equipe 1.xlsx").Sheets("total kg").Range("o" & w) = Workbooks("livreur.xlsm").Sheets("bl").Range("c8")
         Workbooks("equipe 1.xlsx").Sheets("total kg").Range("p" & w) = Workbooks("livreur.xlsm").Sheets("bl").Range("d18")
     End With
     
    fin
    End Sub
    D'avance merci à ceux qui essayerons de m'aidé. Et si l'erreur pouvait mettre expliquer simplement je serai preneur.

    Si défois une âme charitable avait un peu de temps devant lui, le but ultime est de venir remplir sur le classeur équipe 1 en fonction de la date en c8 (sur classeur livreur) dans une colonne du tableau qui correspondrai à la même date et bien sur sur la première cellule vide.

    Et évidement s'il y a besoin de plus d'info, n'hésiter pas à demander.

    Ciao

  2. #2
    Inactif  
    Homme Profil pro
    Inscrit en
    Septembre 2012
    Messages
    1 733
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations forums :
    Inscription : Septembre 2012
    Messages : 1 733
    Points : 2 553
    Points
    2 553
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     w = Workbooks("equipe 1.xlsx").Sheets("TOTAL KG").Range("o50").End(xlUp)(2).Row
    C'est quoi ce 2 entre parenthèses ? Vire moi ça

  3. #3
    Candidat au Club
    Homme Profil pro
    Inscrit en
    Octobre 2013
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Octobre 2013
    Messages : 6
    Points : 3
    Points
    3
    Par défaut
    Comme j'expliquai je suis novice donc je ne sais pas à quoi correspond le 2, et comme je l'avais déjà à d'autre endroit et que sa fonctionne très bien, il me dérangeais pas.

    Sinon j'ai bien retirer le 2 et cela ne change rien du tout, toujours la même erreur.

  4. #4
    Expert éminent sénior
    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
    Points : 18 677
    Points
    18 677
    Par défaut
    Bonjour,

    le 2 entre parenthèses ne gène pas, c'est l'équivalent de .Offset(1). J'utilise régulièrement cette notation …

    Je dirai plutôt que "TOTAL KG" n'est pas égal à "total kg"

    C'est pour cela que je préfère travailler directement avec le CodeName de la feuille (Feuil1.) sinon avec son numéro d'index …

    __________________________________________________________________________________________

    Merci de cliquer sur pour chaque message ayant aidé puis sur pour clore cette discussion …
    C'est parce que la vitesse de la lumière est plus rapide que celle du son que tant de gens paressent brillants avant d'avoir l'air con ! (Thomas Boishardy)

  5. #5
    Membre expérimenté
    Homme Profil pro
    retraité
    Inscrit en
    Mars 2013
    Messages
    885
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2013
    Messages : 885
    Points : 1 499
    Points
    1 499
    Par défaut help. l'indice n'appartient pas à la sélection
    Bonjour,

    Si la casse a son importance dans le nom des feuilles alors la remarque vaut pour sheets("bl")

    On peut d'ailleurs se demander pourquoi avoir défini l'objet "wh" pour ne pas l'utiliser ensuite.

    Au demeurant, pour ma formation, est-il correct de typé "wh as workheet" quand le "set wh" comprend également le classeur ? J'aurai plutôt typé "object".

    Cordialement

  6. #6
    Membre émérite
    Inscrit en
    Octobre 2010
    Messages
    1 401
    Détails du profil
    Informations forums :
    Inscription : Octobre 2010
    Messages : 1 401
    Points : 2 684
    Points
    2 684
    Par défaut
    nibledispo -

    Si la casse a son importance dans le nom des feuilles alors la remarque vaut pour sheets("bl")
    Tu as raison, la casse n'a pas d'importance dans le nom des feuilles.

    Au demeurant, pour ma formation, est-il correct de typé "wh as workheet" quand le "set wh" comprend également le classeur ? J'aurai plutôt typé "object".
    L'objet WorkSheet n'existe pas sans classeur. Mais il demeure un objet WorkSheet. Il faut donc le typer As WorkSheet.
    Il n'y a pas de problème à le typer As Object. Car c'est un "Object" également.

    Docmarti.

    Koukin -
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    w = Workbooks("equipe 1.xlsx").Sheets("TOTAL KG").Range("o50").End(xlUp)(2).Row ' << ---------  :cry:
    Si l'indice n'appartient pas à la sélection, c'est que le classeur n'est pas ouvert ou qu'il n'y a pas de feuille portant ce nom.

    Docmarti
    Cordialement

    Docmarti.

  7. #7
    Membre expérimenté
    Homme Profil pro
    retraité
    Inscrit en
    Mars 2013
    Messages
    885
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2013
    Messages : 885
    Points : 1 499
    Points
    1 499
    Par défaut help. l'indice n'appartient pas à la sélection
    bonjour Docmarti,

    Bien noté ce que tu me dis. Mais alors pourquoi notre amis code t-il les deux lignes suivantes
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Workbooks("equipe 1.xlsx").Sheets("total kg").Range("o" & w) = Workbooks("livreur.xlsm").Sheets("bl").Range("c8")
    et non pas:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Workbooks("equipe 1.xlsx").Sheets("total kg").Range("o" & w) = wh.Range("c8")
    Mon questionnement provenait de cette bizarrerie (enfin pour moi !).
    On peut d'ailleurs se demander pourquoi avoir défini l'objet "wh" pour ne pas l'utiliser ensuite.
    Cordialement.

  8. #8
    Membre émérite
    Inscrit en
    Octobre 2010
    Messages
    1 401
    Détails du profil
    Informations forums :
    Inscription : Octobre 2010
    Messages : 1 401
    Points : 2 684
    Points
    2 684
    Par défaut
    nibledispo

    Tu as raison.

    Moi je mettrais :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Set wb_Livreur_BL = Workbooks("livreur.xlsm").Sheets("bl")
    Set wb_Equipe1_TOTALKG = Workbooks("equipe 1.xlsx").Sheets("TOTAL KG")
    Puis

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    w = wb_Equipe1_TOTALKG.Range("o50").End(xlUp)(2).Row
         wb_Equipe1_TOTALKG.Range("o" & w) = wb_Livreur_BL.Range("c8")
         wb_Equipe1_TOTALKG.Range("p" & w) = wb_Livreur_BL.Range("d18")
    Docmarti
    Cordialement

    Docmarti.

  9. #9
    Membre expérimenté
    Homme Profil pro
    retraité
    Inscrit en
    Mars 2013
    Messages
    885
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2013
    Messages : 885
    Points : 1 499
    Points
    1 499
    Par défaut help. l'indice n'appartient pas à la sélection
    bonsoir Docmarti,

    Pour moi tout est clair.
    Ta proposition de code me semble en effet plus cohérente.

    cordialement

  10. #10
    Candidat au Club
    Homme Profil pro
    Inscrit en
    Octobre 2013
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Octobre 2013
    Messages : 6
    Points : 3
    Points
    3
    Par défaut
    Bonjour à vous,

    Merci pour vos réponses, mais malheureusement sa ne me suffit pas^^

    J'avoue que j'y connais quasiment rien en VBA mais sa me plait^^

    Donc j'ai essayer avec la proposition de Docmarti et sa bloque au niveau de "range("c8"), je pense que cela vient tout simplement de la déclaration de variable je l'ai mis en workbooks mais sa ne doit pas être sa.

    Sinon je me suis demander si le problème à la base ne venait pas d'un code mal fait depuis le début et du coup que VBA se perd un peu ou du moins prend beaucoup de mémoire se qui poserait problème. Je dit sa car j'ai essayer la macro entière (celle-ci dessus n'est qu'un morceau de macro) sur le pc où elle va être utilisé et VBA me donne des messages d'erreur que je n'ai pas sur mon pc, et à des endroit différents de la macro et fini par planter totalement excel et donc fermer excel.

    Au niveau config logiciel les deux pc sont pareil win7 et excel 2010, par contre niveau matériel mon pc est clairement plus puissant que pc qui doit l'utiliser.

    J'aimerais également utiliser les noms de feuil interne plutôt que les nom externe que n'importe qui pourrait modifier, si quelqu'un savait ou trouver un tuto pour ceci, sa serait sympa car je n'ai rien trouver d'intéressant à se sujet.

    Dans l'attente de reponses/avis.

    Cordialement.

  11. #11
    Expert éminent sénior
    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
    Points : 18 677
    Points
    18 677
    Par défaut
    C'est visuel, tu vois les CodeName dans la fenêtre Projet dans l'environnement VBA au dessus de ThisWorbook,
    par exemple Feuil1 et entre parenthèses le nom de la feuille …

    On peut utiliser les CodeName si Option Explicit n'est pas utilisé …

    Si le code se trouve dans le même classeur des feuilles à traiter :

    par exemple ThisWorkbook.Worksheets("nom de la feuille 1").Cells(9,1)

    peut-être remplacé par ThisWorkbook.Worksheets(1).Cells(9,1) (l'Index de la feuille)

    et encore par Feuil1.Cells(9,1)

    Si la feuille n'est pas dans le classeur contenant le code, même en précisant le classeur, il peut y avoir un souci via les CodeName

    Dans ce cas, utiliser une variable objet pointant sur la feuille …
    C'est parce que la vitesse de la lumière est plus rapide que celle du son que tant de gens paressent brillants avant d'avoir l'air con ! (Thomas Boishardy)

  12. #12
    Candidat au Club
    Homme Profil pro
    Inscrit en
    Octobre 2013
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Octobre 2013
    Messages : 6
    Points : 3
    Points
    3
    Par défaut
    ok merci marc donc vu que j'aurai en permanence plusieurs classeurs d'ouvert et qu'il faut les alimenter depuis le formulaire, donc je vais laissez comme sa.

    C'est bon pour la macro qui bugai sur un autre pc j'avais un sub qui tournais sur lui même^^

    Par contre si quelqu'un pouvait me répondre pour savoir comment déclarer des variables qui comporteront le nom du classeur et de la feuille, que j'utiliserais ensuite avec la fonction range.

  13. #13
    Expert éminent sénior
    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
    Points : 18 677
    Points
    18 677
    Par défaut

    Tu l'as déjà avec la ligne n°14 de ton code de ton message initial …
    C'est parce que la vitesse de la lumière est plus rapide que celle du son que tant de gens paressent brillants avant d'avoir l'air con ! (Thomas Boishardy)

  14. #14
    Candidat au Club
    Homme Profil pro
    Inscrit en
    Octobre 2013
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Octobre 2013
    Messages : 6
    Points : 3
    Points
    3
    Par défaut
    sa c'est de la réponse rapide

    donc je ne comprend pas se qui va pas, quand je déclare ma variable de cette manière et que je l'utilise avec .range("A1") la macro bloque et me dit "membre de méthode ou de données introuvable"

  15. #15
    Expert éminent sénior
    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
    Points : 18 677
    Points
    18 677
    Par défaut

    Certainement une erreur de frappe dans le nom de la feuille (et / ou du classeur) comme déjà évoqué …

    Travailler avec l'Index de la feuille, moins de risque d'erreur de saisie !
    C'est parce que la vitesse de la lumière est plus rapide que celle du son que tant de gens paressent brillants avant d'avoir l'air con ! (Thomas Boishardy)

  16. #16
    Candidat au Club
    Homme Profil pro
    Inscrit en
    Octobre 2013
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Octobre 2013
    Messages : 6
    Points : 3
    Points
    3
    Par défaut
    après avoir vérifier moult fois l’orthographe sans trouver d'erreur. J'ai supprimer le sub et tout retaper proprement. et la magnifique sa fonctionne.

    donc effectivement surement une erreur d’orthographe que je n'arrivais pas a voir

    Merci pour tous à tous

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

Discussions similaires

  1. [AC-2007] Erreur : L'indice n'appartient pas à la sélection
    Par Nayko dans le forum VBA Access
    Réponses: 5
    Dernier message: 04/04/2014, 11h23
  2. Réponses: 13
    Dernier message: 27/04/2012, 10h57
  3. Tableau de valeurs : l'indice n'appartient pas à la sélection
    Par Maryy dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 03/08/2008, 14h42
  4. erreur execution 9: l'indice n'appartient pas à la sélection
    Par oliver75 dans le forum Macros et VBA Excel
    Réponses: 8
    Dernier message: 30/07/2007, 12h00
  5. l'indice n'appartient pas à la sélection ??
    Par Bernard83140 dans le forum Access
    Réponses: 4
    Dernier message: 06/05/2006, 22h27

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