Insertion de formules avec VBA
Bonjour
Je débute aussi en VBA et je fais des progrès réguliers. J'ai mis "au point" ce code pour convertir une liste de noms et prénoms (des centaines voir des miliers) collés ensemble de façon à les obtenir séparés dans 2 colonnes distinctes. Les instructions sont clairement indiquées dans le code. J'ai besoin d'aide pour la partie 4 comme indiquée dans le code. Ce code n'est probablement pas le plus optimal mais au moins, je m'y retrouve....et je débute en mettant les mains dans la sauce...comme on dit. J'ai fait des effort plus le rendre clair et lisible. A l'exception de la partie 4 manquante, le code fonctionne bien. Y a t-il quelqu'un qui aura du code pour cette partie manquante, tout prèt pour un besoin semblable. l'idée est de mettre des formules dans des cellules aussi longtemps qu'il y a des noms à "couper" en deux. Note: J'utilise Excel XP US; il se peut que certaines commandes n'aient pas le même nom en Français...je ne le sait pas. Je remercie chaleureusement toute personne pouvant me donner son avis, voir un coup de main sur cette question.
Sub ConversionDesNoms()
'Macro pour convertir des centaines, voir des miliers de noms au format: "Famille, Prénom" dans la colonne A
'en 2 parties soit le nom de famille sans virgule dans la colonne B
'et le prénom dans la colonne C
'La colonne A sera supprimée à la fin
'La liste des noms commence sur la rangée 2
'Partie 1
'Pour supprimer la virgule entre le nom et le prénom dans la colonne A
Columns("A:A").Select
Selection.Replace What:=",", Replacement:="", LookAt:=xlPart, _
SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _
ReplaceFormat:=False
'Partie 2
'Pour insérer une colonne B et une colonne C vierges
'il y a déjà des données dans les colonnes B et C qui deviendront ensuite C et D,
'une fois que la colonne A d'origine sera supprimée (voir Partie 6 plus bas)
Range("B1").Select
Selection.EntireColumn.Insert
ActiveCell.FormulaR1C1 = "Firstname"
Range("C1").Select
Selection.EntireColumn.Insert
ActiveCell.FormulaR1C1 = "Lastname"
Range("B1").Select
Range("C1").Select
With Selection
.HorizontalAlignment = xlCenter
.VerticalAlignment = xlCenter
.WrapText = False
.Orientation = 0
.AddIndent = False
.IndentLevel = 0
.ShrinkToFit = False
.ReadingOrder = xlContext
.MergeCells = False
End With
Selection.Font.Bold = True
Range("A1").Select
Range("C1").Select
'Partie 3
'Pour supprimer la virgule des noms dans la colonne A
Columns("A:A").Select
Selection.Replace What:=",", Replacement:="", LookAt:=xlPart, _
SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _
ReplaceFormat:=False
'Partie 4
'----------Besoin d'aide ici --------------------------------------------------------------------------------------------
' les formules suivantes doivent être copiées respectivement dans les colonnes B et C
' Formule pour B : =LEFT(A2,FIND(" ",A2))
' Formule pour C : =RIGHT(A2,LEN(A2)-FIND(" ",A2))
' et ce, aussi longtemps qu'il y a des données (des noms) dans la colonne A
'Partie 5
'Pour convertir le résusltat des formules en format Paste Special - "Values" (j'ai Excel US)
Columns("B:C").Select
Selection.Copy
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
'Partie 6
'Pour supprimer la colonne A et dé-selectionner le tout
Columns("A:A").Select
Application.CutCopyMode = False
Selection.Delete Shift:=xlToLeft
Range("A1").Select
End Sub
Impressionnant. Clair, net et précis. Je vais l'essayer sans tarder. Merci 1000 fois.