Transpose avec condition

Messages postés
1
Date d'inscription
mardi 23 août 2016
Dernière intervention
23 août 2016
-
Bonjour,
je débute en VBA pour excel 2010
pour cette première connexion sur le forum
je souhaiterai transposer des informations des colonnes A et B
en tableau, en fonction du contenu des cellules des colonnes
ça me semble encore compliqué mais je ne doute pas d'obtenir des solutions
sincères remerciements par avance.
ex:(situation synthétique des infos du fichiers actuel)
col A(nom) Col B(Critère x)
Arthur x1
Arthur x2
Arthur x3
Arthur x5
Arthur x7
Arthur x9
Raoul x2
Raoul x3
Chloé x1
Chloé x9
Chloé x11
12000 lignes à traiter 11 critères possibles
je souhaiterai
Transposées les noms et les critères correspondants en tableau de la manière suivante:
Nom Critères
Col C Col D Col E Col F Col G Col H Col I Col J Col K Col L Col M Col N
A x1 x2 x3 0 x5 0 x7 0 x9 0 0
B 0 x2 x3 0 0 0 0 0 0 0 0
C x1 0 0 0 0 0 0 0 x9 0 x11
Afficher la suite 

Votre réponse

1 réponse

Messages postés
2
Date d'inscription
dimanche 25 septembre 2016
Dernière intervention
17 mai 2017
0
Merci
Bonjour à tous
Bonjour laucsap27

Je ne connais pas l'efficacité de ce code sur 12000 lignes.
Option Explicit

Sub essai_01()
Dim premlign As Integer
Dim derlign As Long
Dim i As Long

Dim c As Range
Dim firstAddress As String
Dim ligne As Integer

premlign = 2
derlign = Range("A" & premlign).End(xlDown).Row

For i = premlign To derlign
With Worksheets("Feuil1").Range("C2:C65536")
Set c = .Find(Range("A" & i), LookIn:=xlValues, Lookat:=xlWhole)
If c Is Nothing Then
If Range("C2") = "" Then
Range("C2") = Range("A" & i)
ligne = 2
Else
Range("C" & Range("C1").End(xlDown).Row + 1) = Range("A" & i)
ligne = Range("C1").End(xlDown).Row
End If
Else
ligne = c.Row
End If

Cells(ligne, CInt(Trim(Right(Range("B" & i), Len(Range("B" & i)) - 1))) + 3) = Range("B" & i)
End With
Next i

End Sub

J'ai gardé la première ligne pour :
nom, critère, nom,1,2,3,4,......11
et c'est pour la "Feuil1".
A toi d'adapter
Tu dis
Eric
Commenter la réponse de Eric4577

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.