L'indice n'appartient pas à la selection

Résolu
Thebibi Messages postés 30 Statut Membre -  
Thebibi Messages postés 30 Statut Membre -
Bonjour,

Ma macro me marque le message d'erreur suivant :

Erreur d'exécution "9" :
L'indice n'appartient pas à la sélection

Je cherche mais je ne trouve pas pourquoi :/

ma macro sert a séparer le prénom et nom dans une cellule unique.

Les conditions sont simples, si il y a un espace on les séparent en deux et d'un coter le prénom et de l'autre le nom

Voici le code :

Sub Decompose()
Dim Tourne As Long
Dim FinLigne As Long
Dim Phrase As String
Dim Nom As String
Dim Prenom As String

FinLigne = Range("A10").End(xlUp).Row
For Tourne = 2 To FinLigne
Phrase = Cells(A & Tourne)
Nom = Split(Phrase, " ")(0)
Prenom = Split(Phrase, " ")(1)
Range("B" & Tourne) = Nom
Range("C" & Tourne) = Prenom
Next Tourne
End Sub


Et la ligne qui apparemment pose problème avec le débogage est celle ci:

Nom = Split(Phrase, " ")(0)

Merci de votre aide ;)

2 réponses

  1. Mike-31 Messages postés 18405 Date d'inscription   Statut Contributeur Dernière intervention   5 147
     
    Bonjour,

    regarde comme cela

    Sub Decompose()
    Dim Tourne As Long
    Dim FinLigne As Long
    Dim Phrase As String
    FinLigne = Range("A100").End(xlUp).Row
    For Tourne = 2 To FinLigne
    Phrase = Cells(Tourne, "A")
    I = InStr(Phrase, " ")
    If I = 0 Then
    Cells(Tourne, "B") = Cells(Tourne, "A")
    Else
    Cells(Tourne, "A") = Left(Phrase, I - 1)
    Cells(Tourne, "B") = Mid(Phrase, I + 1)
    End If
    Next Tourne
    End Sub

    0
    1. Thebibi Messages postés 30 Statut Membre
       
      Bonjour Mike,

      Merci pour ta réponse :)
      0
  2. f894009 Messages postés 17417 Date d'inscription   Statut Membre Dernière intervention   1 717
     
    Bonjour,

    Sub Decompose()
        Dim Tourne As Long
        Dim derlig As Long
        Dim TNP
    
        derlig = Range("A" & Rows.Count).End(xlUp).Row
        For Tourne = 2 To derlig
            TNP = Split(Range("A" & Tourne), " ")
            Range("B" & Tourne) = TNP(0)
            Range("C" & Tourne) = TNP(1)
        Next Tourne
    End Sub
    
    0
    1. Thebibi Messages postés 30 Statut Membre
       
      Bonjour F894009,

      Merci pour ta réponse cela fonctionne parfaitement, et en plus encore plus optimisé !

      Bonne journée.
      0