Classer en colonne des lignes (macro ?)

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 !

josanche

XLDnaute Occasionnel
Bonjour,

J'aurais besoin de classer des lignes de texte en colonne, toutefois je n'arrive pas à bien utiliser le programme de conversion. Je voudrais 4 colonnes dont les titres sont Nom du sénateur, Parti, Etat, Vote et je voudrais remplacé les Y par Yes, N par No et NV par did not vote.

Pourriez-vous trouver un macro qui pourrait répondre à ce problème ? J'ai 100 fichiers excel où je dois faire ce meme procédé avec des noms de sénateurs différents.

Je vous envoie en pièce jointe mon fichier excel pour vous illustrer la situation.
 

Pièces jointes

Re : Classer en colonne des lignes (macro ?)

Bonjour,

En partant du principe que toutes les cellules comportant des noms de sénateurs possèdent des liens hypertextes, tu peux essayer ainsi :

Code:
Sub parti()
Dim Cel As Range
Dim K As Long, Nbr As Long
Dim Etat As String
Dim Tblo()
Columns(1).Replace What:=Chr(160), Replacement:="", LookAt:=xlPart
Nbr = Columns(1).Hyperlinks.Count + 1
Columns("D:G").Clear
ReDim Tblo(1 To Nbr, 1 To 4)
K = 1
Tblo(K, 1) = "Sénateur": Tblo(K, 2) = "Parti": Tblo(K, 3) = "Etat": Tblo(K, 4) = "Vote"
For Each Cel In Range("A1:A" & Cells(Rows.Count, 1).End(xlUp).Row)
    If Cel.Value <> "" Then
        If Cel.Hyperlinks.Count = 0 Then
            Etat = Left(Cel, InStr(1, Cel, ":") - 1)
        Else
            K = K + 1
            Tblo(K, 1) = Trim(Split(Cel, "(")(0))
            Tblo(K, 2) = Trim(Split(Split(Cel, "(")(1), ")")(0))
            Tblo(K, 3) = Etat
            Select Case Right(Trim(Cel), 1)
                Case "Y"
                    Tblo(K, 4) = "Yes"
                Case "N"
                    Tblo(K, 4) = "No"
                Case Else
                    Tblo(K, 4) = "Did not vote"
            End Select
        End If
    End If
Next Cel
Range("D1").Resize(Nbr, 4) = Tblo
End Sub

Nota, tu as des caractères insécables dans les cellules des sénateurs, le dernier caractère...(d'où le remplacement du code (160) par rien)

Bon courage
 
Re : Classer en colonne des lignes (macro ?)

BOnjour, j'ai utilisé, votre macro il est parfait mais juste quelque petites modifications à apporter, vous pouvez inscrire dans le macro pour retirer les lettres "Sen." qui se trouve en face de chaque nom des senateurs car c'est assez redondant et concernant la colonne parti, on voit ceci D-AR- et je voudrais d'abord que les code d'Etat -AR- pour arkansas ou -TX- pour Texas soit retiré et ensuite de transformer les D en "Democratic", R en "Republican" et I en "Independent". Pourriez-vous inscrire cela dans le macro ?

Merci énormément Barbatruc😀
 
Re : Classer en colonne des lignes (macro ?)

Bonjour,

Voir les modifications :

Code:
Sub parti_2()
Dim Cel As Range
Dim K As Long, Nbr As Long
Dim Etat As String
Dim Tblo()
Columns(1).Replace What:=Chr(160), Replacement:="", LookAt:=xlPart
Nbr = Columns(1).Hyperlinks.Count + 1
Columns("D:G").Clear
ReDim Tblo(1 To Nbr, 1 To 4)
K = 1
Tblo(K, 1) = "Sénateur": Tblo(K, 2) = "Parti": Tblo(K, 3) = "Etat": Tblo(K, 4) = "Vote"
For Each Cel In Range("A1:A" & Cells(Rows.Count, 1).End(xlUp).Row)
    If Cel.Value <> "" Then
        If Cel.Hyperlinks.Count = 0 Then
            Etat = Left(Cel, InStr(1, Cel, ":") - 1)
        Else
            K = K + 1
            Tblo(K, 1) = Trim(Split(Cel, "(")(0))
            If Left(Tblo(K, 1), 4) = "Sen." Then Tblo(K, 1) = Trim(Right(Tblo(K, 1), Len(Tblo(K, 1)) - 4))
            Tblo(K, 2) = Trim(Split(Split(Cel, "(")(1), ")")(0))
            Select Case Left(Tblo(K, 2), 1)
                Case "D"
                    Tblo(K, 2) = "Democratic"
                Case "R"
                    Tblo(K, 2) = "Republican"
                Case Else
                    Tblo(K, 2) = "Independent"
            End Select
            Tblo(K, 3) = Etat
            Select Case Right(Trim(Cel), 1)
                Case "Y"
                    Tblo(K, 4) = "Yes"
                Case "N"
                    Tblo(K, 4) = "No"
                Case Else
                    Tblo(K, 4) = "Did not vote"
            End Select
        End If
    End If
Next Cel
Range("D1").Resize(Nbr, 4) = Tblo
End Sub

Bonne journée
 
- 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

Retour