Sub MàJDonnées()
Dim Col As Integer, DLig As Long, Lig As Long
Dim NumMot As Integer, sNom As String, TabMots() As String
' Initialiser les variables
sNom = ""
' Avec la feuille qui porte le nom spécifié
With Sheets("Feuil3")
' Trouver la dernière ligne remplie du tableau
DLig = .Range("A" & Rows.Count).End(xlUp).Row
' Pour chaque ligne
For Lig = 2 To DLig
' Initaliser LA colonne de résultat
Col = 2
' Créer le tableau des mots
TabMots = Split(.Range("A" & Lig), " ")
' Pour chaque mot
For NumMot = 0 To UBound(TabMots)
' Si la première lettre est une majuscule
' et si le mot n'est pas numérique
' et si le mot ne commence pas par un parenthèse
If Left(TabMots(NumMot), 1) = UCase(Left(TabMots(NumMot), 1)) _
And Not IsNumeric(TabMots(NumMot)) And Left(TabMots(NumMot), 1) <> "(" Then
' Alors il s'agit d'un mot du nom
sNom = sNom & TabMots(NumMot) & " "
Else
' Si le nom ne contient aucun mot
If sNom = "" Then
' Inscrire le mot
Cells(Lig, Col).Value = TabMots(NumMot)
Else
' sinon inscire le nom en supprimant l'espace de fin
sNom = Left(sNom, Len(sNom) - 1)
Cells(Lig, Col).Value = sNom
Col = Col + 1
Cells(Lig, Col).Value = TabMots(NumMot)
sNom = ""
End If
' Incrémenter le numéro de colonne
Col = Col + 1
End If
Next NumMot
Next Lig
End With
End Sub