mon module VBA ne fonctionne pas correctement

  • Initiateur de la discussion Initiateur de la discussion beegees
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

beegees

XLDnaute Occasionnel
Bonjour tout le monde,

Le code VBA ci-dessous permet de séparer le nom du prénom en les copiant dans deux collones différentes.

Le problème est que les nom sont concaténés, idem pour les prénoms.

Est-ce que vous pourriez svp regarder ce qu'il se passe ?

C'est un travail très important pour moi.

Merci d'avance pour votre aide.

beegees

Sub montest()
Dim st As String
Dim tb() As String
Dim i As Integer
Dim stNom As String
While ActiveCell.Value <> ""
st = ActiveCell.Value
tb = Split(st, " ")
LeNom = tb(0)
For i = 1 To UBound(tb)
LeReste = LeReste & " " & tb(i)
Next
LeReste = Trim(LeReste)
Tb2 = Split(LeReste, " ")
For n = 0 To UBound(Tb2)
For i = 2 To Len(Tb2(n))
LeCar = Asc(Mid(Tb2(n), i, 1))
pr = LeCar > 96 And LeCar < 123 Or LeCar > 223 'c'est un prénom
If pr Then Exit For
Next
If pr Then
Prénom = Prénom & " " & Tb2(n)
ElseIf Not pr Then
LeNom = LeNom & " " & Tb2(n)
End If
Next
LeNom = Trim(LeNom)
Prénom = Trim(Prénom)
ActiveCell.Offset(0, 1).Select
ActiveCell.Value = Prénom
ActiveCell.Offset(0, 1).Select
ActiveCell.Value = LeNom
ActiveCell.Offset(1, 0).Select
ActiveCell.Offset(0, -1).Select
ActiveCell.Offset(0, -1).Select
Wend

'MsgBox LeNom
'MsgBox Prénom
End Sub
 
Re : mon module VBA ne fonctionne pas correctement

Bonjour

Pour y voir plus clair...
Code:
Sub montest()
Dim st As String
Dim tb() As String
Dim i As Integer
Dim stNom As String
While ActiveCell.Value <> ""
st = ActiveCell.Value
tb = Split(st, " ")
LeNom = tb(0)
For i = 1 To UBound(tb)
LeReste = LeReste & " " & tb(i)
Next
LeReste = Trim(LeReste)
Tb2 = Split(LeReste, " ")
For n = 0 To UBound(Tb2)
For i = 2 To Len(Tb2(n))
LeCar = Asc(Mid(Tb2(n), i, 1))
pr = LeCar > 96 And LeCar < 123 Or LeCar > 223 'c'est un prénom
If pr Then Exit For
Next
If pr Then
Prénom = Prénom & " " & Tb2(n)
ElseIf Not pr Then
LeNom = LeNom & " " & Tb2(n)
End If
Next
LeNom = Trim(LeNom)
Prénom = Trim(Prénom)
ActiveCell.Offset(0, 1).Value = Prénom
ActiveCell.Offset(0, 1).Value = LeNom
ActiveCell.Offset(1, 0).Select
ActiveCell.Offset(0, -1).Select
ActiveCell.Offset(0, -1).Select
Wend

'MsgBox LeNom
'MsgBox Prénom
End Sub

Edit: Wilfried, c'était pour éviter le Select (j'ai pas fait plus attention que cela)
J'ai vu un Select alors je l'ai supprimé betement
 
Dernière édition:
Re : mon module VBA ne fonctionne pas correctement

bonjour beegees

il serait preferable, d'avoir un ptit fichier, qui nous montrerait le resultat de ta macro pour pouvoir la corriger en consequence.

@te lire

edit: toujours aussi lent lol m'enfin une petite correction staple

LeNom = Trim(LeNom)
Prénom = Trim(Prénom)
ActiveCell.Offset(0, 1).Value = Prénom ' le offset ne rend pas la cellule active
ActiveCell.Offset(0, 1).Value = LeNom ' ----> tu ecrases le prenom avec le nom


LeNom = Trim(LeNom)
Prénom = Trim(Prénom)
ActiveCell.Offset(0, 1).Value = Prénom
ActiveCell.Offset(0, 2).Value = LeNom
 
Dernière édition:
Re : mon module VBA ne fonctionne pas correctement

Salut vous deux,

Merci beaucoup pour votre déouvement.

Voici le fichier avec un exemple.

Pour lancer la macro, il faut appuyer sur CTRL + W.

Merci pour votre aide.

beegees

wilfried_42 à dit:
bonjour beegees

il serait preferable, d'avoir un ptit fichier, qui nous montrerait le resultat de ta macro pour pouvoir la corriger en consequence.

@te lire

edit: toujours aussi lent lol m'enfin une petite correction staple




LeNom = Trim(LeNom)
Prénom = Trim(Prénom)
ActiveCell.Offset(0, 1).Value = Prénom
ActiveCell.Offset(0, 2).Value = LeNom
 

Pièces jointes

Re : mon module VBA ne fonctionne pas correctement

Re

Ce n'est pas ma version

Je ne suis pas l'auteur de la macro originale
comme c'est indiqué dans le code.

J'ai juste modifié selon ta question.

Mais tant mieux si cela t'aide.

EDITION
: une version dont je suis l'auteur cette fois
Code:
Sub b() [COLOR=Green]' extraire nom et prénom[/COLOR]
Dim i As Long
For i = 1 To [A65536].End(xlUp).Row
Cells(i, "A").Offset(, 1).Resize(, 2).Value = _
Array(Split(Cells(i, "A"))(1), Split(Cells(i, "A"))(0))
Next i
End Sub

PS: je supprime donc la pj dans mon autre message.
 
Dernière édition:
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

Réponses
15
Affichages
784
Réponses
5
Affichages
910
Réponses
4
Affichages
733
Retour