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 avec la fonction Split et un tableau [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
    Homme Profil pro
    Étudiant
    Inscrit en
    Février 2013
    Messages
    54
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2013
    Messages : 54
    Par défaut Problème avec la fonction Split et un tableau
    Bonjour à tous,

    Tout d'abord, voici mon code :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    Dim x, y As Integer
    Dim CI As String
    For x = 8 To 9 Step 1
        For y = 4 To 8 Step 1
            If Cells(x, y).Value <> "" Then
                Tableau = Split(Pointage.Cells(x, y), "-")
                CI = Tableau(2)
                Cells(x, y).Value = CI
            End If
        Next
    Next
    En gros, je parcours les cellules d'un tableau et dès que l'une d'elles n'est pas vide, je fais un split afin de récupérer une partie de son contenu, le stocke dans la variable CI, et remplace l'ancien contenu de la cellule par la variable. Mais j'ai une erreur "L'indice n'appartient pas à la sélection" au niveau de la ligne CI = Tableau(2).

    Pouvez-vous me dire ce qui ne va pas svp ?
    Merci beaucoup.

  2. #2
    Membre expérimenté
    Homme Profil pro
    Technicien Méthodes
    Inscrit en
    Mars 2013
    Messages
    128
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France

    Informations professionnelles :
    Activité : Technicien Méthodes
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Mars 2013
    Messages : 128
    Par défaut
    Bonjour,

    Comment as-tu défini ton tableau ?

    car la je ne vois aucune déclaration

    essaye de faire un

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Dim tableau(LaLongueurSouhaitePourLeTableau)

  3. #3
    Expert confirmé
    Homme Profil pro
    aucune
    Inscrit en
    Septembre 2011
    Messages
    8 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : aucune

    Informations forums :
    Inscription : Septembre 2011
    Messages : 8 208
    Par défaut
    Bonjour,

    L'indice de la première partiie est 0. Tableau(2) est donc la troisième partie. Par exemple :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Tableau = Split("aaa-bbb-ccc", "-")
    Tableau(2) correspondra à ccc. S'il n'y a pas deux tirets dans la chaine, tu auras cette erreur.

    Pour récupérer la dernière partie :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    MsgBox Tableau(UBound(Tableau))

  4. #4
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Février 2013
    Messages
    54
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2013
    Messages : 54
    Par défaut [XL-2007] Problème avec la fonction Split et un tableau
    Rebonjour,

    J'avais déjà esssayé d'écrire : Mais j'ai l'erreur suivante : "Impossible d'affecter à un tableau" au niveau de la ligne :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Tableau = Split(Pointage.Cells(x, y), "-")
    Ma cellule contient au départ ce genre de texte : "20005 - COGOLIN - 713501.EV - routage". Et je veux récupérer "713501.EV" donc Tableau(2).
    Donc je ne vois toujours pas...

  5. #5
    Invité
    Invité(e)
    Par défaut
    Bonjour,
    Il peut être intéressant de s’assurer de la conformité des données :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    Sub TestSplit()
    Const txt = "aaa-bbb-ccc"
    CI = ""
    If InStr(1, txt, "-") <> 0 Then
        Tableau = Split(txt & "--", "-")
            If Trim("" & Tableau(2)) <> "" Then CI = Tableau(2)
    End If
    End Sub
    en plus CI est un string et Tableau(2) non:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    CI = Trim("" & Tableau(2))

  6. #6
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Février 2013
    Messages
    54
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2013
    Messages : 54
    Par défaut [XL-2007] Problème avec la fonction Split et un tableau
    J'ai essayé ce test mais ça ne fonctionne toujours pas... N'avez-vous pas une autre idée à me soumettre ?

  7. #7
    Membre émérite Avatar de issoram
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Janvier 2009
    Messages
    665
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Saône et Loire (Bourgogne)

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

    Informations forums :
    Inscription : Janvier 2009
    Messages : 665
    Par défaut
    Bonjour,

    Quelle est la valeur de la cellule "Pointage.Cells(x, y)" qui fait planter l'instruction ?

  8. #8
    Membre Expert
    Homme Profil pro
    Ingénieur systèmes et réseaux
    Inscrit en
    Avril 2008
    Messages
    875
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Ingénieur systèmes et réseaux
    Secteur : Conseil

    Informations forums :
    Inscription : Avril 2008
    Messages : 875
    Par défaut
    Citation Envoyé par flo1411 Voir le message
    Rebonjour,

    J'avais déjà esssayé d'écrire : Mais j'ai l'erreur suivante : "Impossible d'affecter à un tableau" au niveau de la ligne :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Tableau = Split(Pointage.Cells(x, y), "-")
    Ma cellule contient au départ ce genre de texte : "20005 - COGOLIN - 713501.EV - routage". Et je veux récupérer "713501.EV" donc Tableau(2).
    Donc je ne vois toujours pas...
    Au sujet de cette erreur regardez ceci:
    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
    24
    25
    26
    27
    28
    29
    30
    Sub test()
    ' test de split avec un tableau de type variant
    Dim tableau()
    Debug.Print VBA.Information.TypeName(tableau)
     
    On Error Resume Next
    tableau = Split("test-de-tableau", "-")
    Select Case Err.Number
        Case 0
            Debug.Print "La procédure s'est déroulé normalement et tableau(2) vaut " & tableau(2)
        Case Else
            Debug.Print "Erreur d'affectation du résultat de split (tableau de texte)"
    End Select
    On Error GoTo 0
     
     
    'test d'affectation avec un tableau de type texte
    Dim tableau2() As String
    Debug.Print VBA.Information.TypeName(tableau2)
    On Error Resume Next
    tableau2 = Split("test-de-tableau", "-")
    Select Case Err.Number
        Case 0
            Debug.Print "La procédure s'est déroulé normalement et tableau(2) vaut " & tableau2(2)
        Case Else
            Debug.Print "Erreur d'affectation du résultat de split (tableau de texte)"
    End Select
    On Error GoTo 0
     
    End Sub

    il aurait donc fallu déclarer:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    dim tableau() as string

  9. #9
    Invité
    Invité(e)
    Par défaut
    Bonsoir Benjîle,
    J'ai extrait ça de son code le problème ne vient pas du split!

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    For x = 8 To 9 Step 1
            For y = 4 To 8 Step 1
                If  Pointage.Cells(x, y).Value) <> "" Or Pintage.Cells(x, y).Value <> "Férié" Or Pointage.Cells(x, y).Value <> "Congé" Then
                    Tabl = Split(Pointage.Cells(x, y).Value, "/")
                    Pointage.Cells(x, y).Value = Tabl(2)
                End If      
      Next
        Next

  10. #10
    Membre Expert
    Homme Profil pro
    Ingénieur systèmes et réseaux
    Inscrit en
    Avril 2008
    Messages
    875
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Ingénieur systèmes et réseaux
    Secteur : Conseil

    Informations forums :
    Inscription : Avril 2008
    Messages : 875
    Par défaut
    j'ai vu j'ai vu mais il a eu un problème sur split, et c'est un problème que j'ai mis un bout de temps à comprendre, donc je voulais partager

    désolé pour le hors sujet

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

Discussions similaires

  1. problème avec la fonction split(":")
    Par polo42 dans le forum Général Python
    Réponses: 2
    Dernier message: 15/08/2007, 16h13
  2. [VB6]Problème avec la Fonction Split
    Par Goupo dans le forum VB 6 et antérieur
    Réponses: 3
    Dernier message: 07/06/2007, 19h23
  3. [Tableaux] problème avec la fonction split()
    Par Marcus15 dans le forum Langage
    Réponses: 3
    Dernier message: 26/02/2007, 11h17
  4. Réponses: 11
    Dernier message: 14/10/2006, 21h26
  5. [Postgresql]Problème avec les fonctions ...
    Par fet dans le forum Requêtes
    Réponses: 4
    Dernier message: 02/10/2003, 09h04

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