OVH Cloud OVH Cloud

recherche d'une formule

1 réponse
Avatar
mad
les feuille se presente ainsi
sur les 5 premiere feuilles

colonne A / colonne B / colonne C
donnée x
donnée v
donnéek


l'ordre des donnée varie selon les feuilles et il peut y avoir des données
differents selon les feuille


ma 6eme page

colonne A / colonne B
donnée x
donnée k
donnée v


la colonne A rassemble toute les donnée des colonnes a precedente et chaque
donnée ne doit apparaitre qu'une fois. ( sur cette feuille elle doivent
apparaitre automatiquement lorsque l'on rempli les 5 feuille precedente)

je ne sait pas si cela est possible sur excel

dans l'attente de vos reponse
merci

1 réponse

Avatar
PMO
Bonjour,

Une solution mais par macro (VBA).
ATTENTION faites le test sur une copie de votre classeur

IMPERATIVEMENT NECESSAIRE
Il faut que les 6 feuilles soient classées dans l'ordre au 6 premières places.
Les 5 feuilles de données en premier puis la feuille qui collecte
en sixième position.

1) Copiez le code suivant dans un module Standard
'**********
Sub Collecteur(Sh As Object)
Dim S As Worksheet
Dim R As Range
Dim i&
Dim j&
Dim deb&
Dim var(1 To 5)
Dim T()
Dim Tbl()
On Error GoTo Erreur
Application.ScreenUpdating = False
For i& = 1 To 5
Set S = Worksheets(i&)
Set R = S.UsedRange.Resize _
(S.UsedRange.Rows.Count, 1)
var(i&) = R
Next i&
Set S = Worksheets(6)
S.Activate
S.Columns(1).ClearContents
deb& = 1
For i& = 1 To 5
S.Range(Cells(deb&, 1), _
Cells(UBound(var(i&), 1) + deb& - 1, 1)) _
= var(i&)
deb& = deb& + UBound(var(i&), 1)
Next i&
Set R = Range("a1:a" & deb& - 1 & "")
R.Sort Key1:=[a1], _
Order1:=xlAscending, _
Header:=xlNo
Erase var()
Set R = R.Resize(R.Rows.Count + 1, R.Columns.Count)
var(1) = R
S.Columns(1).ClearContents
For i& = 1 To UBound(var(1), 1) - 1
If var(1)(i&, 1) <> var(1)(i& + 1, 1) Then
j& = j& + 1
ReDim Preserve T(1 To j&)
T(j&) = var(1)(i&, 1)
End If
Next i&
ReDim Tbl(1 To UBound(T), 1 To 1)
For i& = 1 To UBound(T)
Tbl(i&, 1) = T(i&)
Next i&
Range("a1:a" & UBound(T) & "") = Tbl
Erreur:
Sh.Activate
Application.ScreenUpdating = True
End Sub
'**********

2) Copiez le code suivant dans ThisWorkbook
'**********
Private Sub Workbook_SheetChange _
(ByVal Sh As Object, ByVal Target As Range)
If Sh.Index < 6 Then Call Collecteur(Sh)
End Sub
'**********

Pour que la feuille collecteur (la 6ème) soit une première
fois renseignée il faut entrer une nouvelle valeur dans une
des 5 premières feuilles de données.
La macro Collecteur n'est pas lancer directement par
l'utilisateur mais est appelée par l'évènement Workbook_SheetChange
du classeur.

Cordialement.

--
PMO
Patrick Morange



les feuille se presente ainsi
sur les 5 premiere feuilles

colonne A / colonne B / colonne C
donnée x
donnée v
donnéek


l'ordre des donnée varie selon les feuilles et il peut y avoir des données
differents selon les feuille


ma 6eme page

colonne A / colonne B
donnée x
donnée k
donnée v


la colonne A rassemble toute les donnée des colonnes a precedente et chaque
donnée ne doit apparaitre qu'une fois. ( sur cette feuille elle doivent
apparaitre automatiquement lorsque l'on rempli les 5 feuille precedente)

je ne sait pas si cela est possible sur excel

dans l'attente de vos reponse
merci