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
Cette action est irreversible, confirmez la suppression du commentaire ?
Signaler le commentaire
Veuillez sélectionner un problème
Nudité
Violence
Harcèlement
Fraude
Vente illégale
Discours haineux
Terrorisme
Autre
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
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
'----------------------------------------------
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
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
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
'-----------------------------------------
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