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 :

Problème | L'indice n'appartient pas à la sélection [XL-2007]


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti Avatar de Mr.Anime
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Octobre 2018
    Messages
    28
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 28
    Localisation : Suisse

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Octobre 2018
    Messages : 28
    Par défaut Problème | L'indice n'appartient pas à la sélection
    Bonjour à tous, bonjour Forum,

    Je code depuis peut en VBA et suis du coup vraiment "débutant".
    Je créé une Macro qui me sert à l'extraction de données spécifique.

    Là, je suis bêtement bloqué sur une valeur "vide" que je ne sais pas comment régler.

    Données excel :

    LED 3000K CRI>80
    LED 3000K CRI>80
    LED 3000K CRI>80
    LED 3000K CRI>80
    
    LED 3000K CRI>80
    Voici mon code

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    Dim C As Range, derlig As Long, plage As Range
        derlig = Range("K" & Rows.Count).End(xlUp).Row
        For Each C In Range("K2:K" & derlig).Cells
            If C Is Nothing Then
            Set plage = C
            Else
             C.Value = Left(Split(C.Value, " ")(0), 3)
            End If
            Next
        If Not plage Is Nothing Then plage.Cells.Value = ""
    J'essais de modifier, dans la colonne K, le début de mes cellules pour ne garder que "LED" d'où le
    Left(Split(C.Value, " ")(0), 3)
    .
    Mais quand ma macro arrive a une cellule vide, elle m'affiche ma fameuse erreur "9" mais du coup, j'arrive pas a comprendre comment lui spécifier que quand c'est "vide" elle passe à la cellule d'après.
    Je croyais que mon boud de code ferait l'affaire mais non
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     If C Is Nothing Then
      Set plage = C
    Else
    Auriez vous une astuce ou plutôt un conseil ?

    Merci Forum

    ProVillard

  2. #2
    Membre Expert
    Avatar de Igloobel
    Homme Profil pro
    Développeur ERP - VBA et Formateur bureautique
    Inscrit en
    Septembre 2005
    Messages
    1 871
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loiret (Centre)

    Informations professionnelles :
    Activité : Développeur ERP - VBA et Formateur bureautique
    Secteur : Industrie

    Informations forums :
    Inscription : Septembre 2005
    Messages : 1 871
    Billets dans le blog
    1
    Par défaut
    Bonjour,

    à la place de If C Is Nothing Then, je mettrai If C ="" Then.

    VBA ne comprend pas que Nothing est vide, il veut ""

    tu dis

    A+

  3. #3
    Membre averti Avatar de Mr.Anime
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Octobre 2018
    Messages
    28
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 28
    Localisation : Suisse

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Octobre 2018
    Messages : 28
    Par défaut
    Bonsoir Igloobel,

    Effectivement ! À présent cela marche !
    Merci beaucoup.

    Fallait le savoir ! Merci encore.

    Bonne soirée

  4. #4
    Membre averti Avatar de Mr.Anime
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Octobre 2018
    Messages
    28
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 28
    Localisation : Suisse

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Octobre 2018
    Messages : 28
    Par défaut
    Bonsoir Menhir,

    Ce que c'est bien d'apprendre

    Merci pour les conseils.
    C'est vrai que je n'avais pas vu cette différence...

    C'est en forgeant que l'on devient forgeron.

    Belle soirée

  5. #5
    Expert éminent Avatar de Menhir
    Homme Profil pro
    Ingénieur
    Inscrit en
    Juin 2007
    Messages
    16 037
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2007
    Messages : 16 037
    Par défaut
    Citation Envoyé par Igloobel Voir le message
    à la place de
    "If C Is Nothing Then"

    je mettrai

    "If C ="" Then"
    ... ou, mieux, If C <> "" Then puisque, si j'ai bien compris, dans la cas où la case est vide, il n'y a rien à faire.
    Donc, à la place de toute la structure If ... Then :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    If C.Value <> "" Then C.Value = Left(Split(C.Value, " ")(0), 3)
    Citation Envoyé par ProVillard Voir le message
    Je croyais que mon bou de code ferait l'affaire mais non
    En fait, tu confonds une cellule vide et une cellule inexistante.

    Par exemple, si tu recherches une valeur avec une méthode Find et que cette valeur ne se trouve pas dans la plage de recherche, tu obtiendras Nothing.
    Mais si tu indiques une cellule et que cette cellule n'a pas de contenu, elle existe quand même.
    Il faut donc tester son contenu et non la cellule elle-même.

    Petit détail : la propriété Value est implicite et VBA parvient à interpréter le code dans la plupart des cas lorsqu'elle est omise.
    Personnellement, je conseille de la mettre quand même car il peut arriver dans certains cas particuliers qu'il y ait ambigüité et que ça cause des problèmes.

+ 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. [XL-2010] Problème dans une boucle : "l'indice n'appartient pas à la sélection"
    Par amstrong dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 03/01/2013, 14h05
  3. Réponses: 13
    Dernier message: 27/04/2012, 10h57
  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