thierry.bayard
XLDnaute Junior
Bonjour,
J'ai un problème très simple mais difficile à décrire, d'où la présence d'un fichier exemple.
En quelques mots :
- J'ai 2 listes distinctes (1 liste de comptes, 1 liste d'UF)
- Je veux obtenir un tableau avec 2 colonnes (Comptes et UF) qui reprenne chaque possibilité compte / UF. Ainsi le nombre de ligne du tableau correspond au nombre de comptes multiplié par le nombre d'UF. (C'est plus facilement compréhensible avec le fichier joint).
- Le nombre de comptes et d'UFs est variable.
J'ai "bidouillé" un morceau de code qui fonctionne mais devient très très long lorsque le nombre de comptes et d'UF augmente. :
Voyez-vous une solution pour améliorer cela ?
Merci d'avance pour votre aide.
Thierry
J'ai un problème très simple mais difficile à décrire, d'où la présence d'un fichier exemple.
En quelques mots :
- J'ai 2 listes distinctes (1 liste de comptes, 1 liste d'UF)
- Je veux obtenir un tableau avec 2 colonnes (Comptes et UF) qui reprenne chaque possibilité compte / UF. Ainsi le nombre de ligne du tableau correspond au nombre de comptes multiplié par le nombre d'UF. (C'est plus facilement compréhensible avec le fichier joint).
- Le nombre de comptes et d'UFs est variable.
J'ai "bidouillé" un morceau de code qui fonctionne mais devient très très long lorsque le nombre de comptes et d'UF augmente. :
Code:
Sub Macro1()
'
' Macro1 Macro
'
Dim compteur
Application.ScreenUpdating = False
Range("F2:G200").ClearContents
Application.Goto Reference:="Liste_cpte"
Selection.Copy
If Range("Nb_UF").Value = 1 Then
Range("F2").Select
ActiveSheet.Paste
Application.CutCopyMode = False
Else
Range("F2").Select
ActiveSheet.Paste
For compteur = 1 To Range("Nb_UF").Value - 1
Range("F2").End(xlDown).Offset(1, 0).PasteSpecial
Next
Application.CutCopyMode = False
End If
Range("Liste_UF").Copy
Range("G2").PasteSpecial
Application.CutCopyMode = False
While ActiveCell.Offset(1, -1).Value <> ""
ActiveCell.Offset(1, 0).Select
If ActiveCell.Offset(0, -1).Value = Range("F2").Value Then
Else
Selection.Insert Shift:=xlDown, CopyOrigin:=xlFormatFromLeftOrAbove
ActiveCell.Offset(-1, 0).Copy
ActiveCell.PasteSpecial
Application.CutCopyMode = False
End If
Wend
Application.ScreenUpdating = True
End Sub
Merci d'avance pour votre aide.
Thierry