OVH Cloud OVH Cloud

Besoin d'aide excel urgent

2 réponses
Avatar
MohcineElBied
Bonsoir les amis ,

j'aurais besoin de votre aide sur un petit soucis que j'ai sur excel en effet je cherche une astuce pour automatiser mon fichier via des formule excel l'idée c'est de faire apparaitre si le meme utilisateur dans chaque ligne le them souhaité exemple utilisareur 188 aime fortet dans une ligne dans une autre ligne le meme utilisareur aime la plage ..... voici le tableau
merci beaucoup

Fichier brut
188 Foret ,plage ,montagne,maison
188 Foret ,plage ,montagne,maison
188 Foret ,plage ,montagne,maison
188 Foret ,plage ,montagne,maison
188 Foret ,plage ,montagne,maison
188 Foret ,plage ,montagne,maison
177 FRENCH , ENGLISH,SPANISH
177 FRENCH , ENGLISH,SPANISH
230 pomme ,banane,poire ,fraise
230 pomme ,banane,poire ,fraise
230 pomme ,banane,poire ,fraise
230 pomme ,banane,poire ,fraise

Idée souhaité
188 foret
188 plage
188 montagne
188 maison
177 french
177 english
177 spanish

2 réponses

Avatar
MichD
Bonjour,
Tu peux essayer ceci :
P.S.- Tu es sur un forum dont les répondeurs sont des bénévoles. Le fait
d'écrire "urgent" dans le sujet du fil de discussion ne fait pas de sens!
'----------------------------------------------
Sub test()
Dim Rg As Range, C As Range, B As Long
Dim A As Long, Sh As Worksheet
'Modifie le nom de la feuille pour celle de ton classeur
Set Sh = Worksheets("Feuil1")
With Sh
'Adapte la plage de cellules
Set Rg = .Range("A1:B" & .Range("A" & .Rows.Count).End(xlUp).Row)
End With
For Each C In Rg.Columns(1).Cells
If C.Value = C.Offset(1) Then
A = A + 1
Set C = C.Offset(1)
Else
With Sh
B = B + 1
'la plage où se retrouvera le résultat
'la plage débute en ligne 1
.Range("G" & B) = C.Value
.Range("h" & B) = C.Offset(, 1).Value
End With
End If
Next
End Sub
'----------------------------------------------
MichD
Avatar
MichD
Comme tu veux le résultat en verticale, utilise plutôt ceci :
'-----------------------------------------
Sub test()
Dim Rg As Range, C As Range, B As Long
Dim A As Long, Sh As Worksheet
'Modifie le nom de la feuille pour celle de ton classeur
Set Sh = Worksheets("Feuil1")
With Sh
'Adapte la plage de cellules
Set Rg = .Range("A1:B" & .Range("A" & .Rows.Count).End(xlUp).Row)
End With
For Each C In Rg.Columns(1).Cells
If C.Value = C.Offset(1) Then
A = A + 1
Set C = C.Offset(1)
Else
With Sh
B = B + 1
x = Split(C.Offset(, 1), ",")
'la plage où se retrouvera le résultat
'la plage débute en ligne 1
.Range("G" & B).Resize(UBound(x) + 1) = C.Value
.Range("h" & B).Resize(UBound(x) + 1) =
Application.Transpose(x)
B = B + UBound(x)
End With
End If
Next
End Sub
'-----------------------------------------
MichD