Code VBA conversion ligne en colone

Bonjour,

J’ai dans ma feuille « base » des codes agent en colonne A et des destinations en colonne B
Pour 1 même agent je peux avoir plusieures destinations
j’aurais besoin de convertir dans ma feuille « résultat » pour avoir qu’une ligne par agent mais les destinations dans des colonnes

un exemple en PJ avec l’onglet résultat ce que je voudrais obtenir

j’ai tenté le code suivant sans succès
j’ai un souci de compréhension sur la « valeur pivot »
Sub ConvertRowsToColumns()
Dim ws As Worksheet
Dim wsOutput As Worksheet
Dim lastRow As Long
Dim pivotValue As String
Dim startRow As Long
Dim i As Long, j As Long
Dim outputRow As Long

' Définir les feuilles de travail
Set ws = ThisWorkbook.Sheets("base") ' Remplacez par le nom de votre feuille de calcul
Set wsOutput = ThisWorkbook.Sheets("résultat") ' Remplacez par le nom de votre feuille de sortie

' Définir la valeur pivot
pivotColumn = 1
pivotValue = "123456" ' Remplacez par votre valeur pivot
startRow = 2 ' La ligne de départ (ignorer les en-têtes par exemple)

' Trouver la dernière ligne de la feuille de calcul
lastRow = ws.Cells(ws.Rows.Count, "A").End(xlUp).Row

' Initialiser la ligne de sortie
outputRow = 2

' Parcourir les lignes de la feuille d'entrée
For i = startRow To lastRow
    If ws.Cells(i, 1).Value = pivotValue Then
        ' Si la valeur pivot est trouvée, copier les valeurs dans des colonnes
        j = 2
        Do While ws.Cells(i, j).Value <> ""
            wsOutput.Cells(outputRow, j - 1).Value = ws.Cells(i, j).Value
            j = j + 1
        Loop
        outputRow = outputRow + 1
    End If
Next i

test conversion ligne-colone.xlsm (18,9 Ko)

Bonjour

Ma proposition ci-jointe
Onglet « base » cliques sur le bouton « Traitement »
Onglet « résultat » constates le résultat
Fais des essais et dis moi

test conversion ligne-colone.xlsm (21,4 Ko)

1 « J'aime »

bonjour,
on peut le faire avec un dictionaire, macro « Ellen »
test conversion ligne-colone (1).xlsm (28,4 Ko)

1 « J'aime »

Bonjour FFO

ça fonctionne
merci beaucoup

1 « J'aime »

Bonjour Cow18

ça fonctionne également

merci

2 « J'aime »

Bonjour
Merci pour ce retour positif
Au plaisir une prochaine fois

Bonjour
Je serais intéresser si l’on pouvait aussi reconnaitre la destination (France, Angleterre…) et y placer la ville correspondante, en sachant qu’il ne peut avoir qu’une destination par pays / par agent.
Donc si Paris existe, Nimes ne pourra pas être une destination (France) pour le même agent ou
si Nimes existe, Paris ne pourra pas être une destination (France) pour le même agent.

1 « J'aime »

test conversion ligne-colone-Trie.xlsm (21,9 Ko)
Voici l’exemple.

1 « J'aime »

test conversion ligne-colone-Trie.xlsm (32,5 Ko)

1 « J'aime »

Bonjour
Cela fonctionne sur 2016 sous windows
et bug sous la version 2016 sous Mac code erreur d’exécution « 429 »
Un composant d’activeX ne peut pas crée d’objet.
Il bloque sur:
Set Dict = CreateObject(« scripting.dictionary ») 'cr_er un dictionaire
Auriez-vous une solution?
Un grand merci car j’utilise essentiellement Mac.
Bien à vous
Jean-Léon

1 « J'aime »

voila la solution sans dictionaire
test conversion ligne-colone-Trie.xlsm (31,6 Ko)

1 « J'aime »

Bonjour
Cela fonctionne à moitié, j’ai ajouté Allemagne comme pays et attribué le premier agent à la ville de Bonn.
Le résultat m’indique que l’agent va bien à Bonn mais situé en France.
Bien à vous
test conversion ligne-colone-Trie(2).xlsm (26,9 Ko)

1 « J'aime »

oui, vous avez raison, il y avait une erreur pour les pays.
test conversion ligne-colone-Trie(2).xlsm (34,1 Ko)
(J’avais aussi un problème avec l’accent de la feuille « Résultat » dans VBA, maintenant c’est sans accent.

1 « J'aime »

Excellent !
Merci beaucoup pour votre aide.
Bien à vous

2 « J'aime »

Ce sujet a été automatiquement fermé après 30 jours. Aucune réponse n’est permise dorénavant.