Macro pouur centraliser des données d'autres onglets sur un onglet

  • Initiateur de la discussion Initiateur de la discussion romdurk
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

romdurk

XLDnaute Nouveau
Bonsoir à tous,

Je souhaiterais réaliser une macro afin de centraliser certaines données d'onglets dans un onglet centralisateur. Pour être plus concret je vous envoie le fichier en question en PJ.
Les deux onglets de droite (A000-0074 et A000-007) sont deux produits. Je souhaiterais transférer les données utiles dans l'onglet de gauche "LISTE". Par exemple, la cellule C8 des onglets produits irait dans la cellule A2 de LISTE.
Je souhaite avoir une macro car j'ai un paquet d'onglet comme cela. En outre, j'aimerais que mes cellules de liste soient liées aux onglets produits.

Qlqu'un a une idée?

Merci bcp par avance
 

Pièces jointes

Re : Macro pouur centraliser des données d'autres onglets sur un onglet

Bonjour romdurk,
Ci-après une proposition à mettre dans un module

Code:
Sub Copier_Onglets()
Dim Onglet As String
Dim i  As Integer, k As Integer
Dim Deb As Long
Dim TVar() As String
Dim Ts() As String

k = 1
For i = 3 To ActiveWorkbook.Sheets.Count
    Onglet = Sheets(i).Name
    If Onglet = "LISTE" Or Onglet = "TRAMES" Then GoTo Fin
    With Sheets(Onglet)
        ReDim Preserve TVar(k)
        TVar(k) = Onglet & "~" & .Range("C9") & "~" & .Range("C11") & "~" & .Range("C12") & "~" & .Range("C25") _
                  & "~" & .Range("C26") & "~" & .Range("C20") & "~" & .Range("C41") & "~" & .Range("C23")
        k = k + 1
    End With
Fin:
Next i

With Sheets("LISTE")
For i = 1 To UBound(TVar)
    Deb = Range("A1", Range("A65535").End(xlUp)).Rows.Count + 1
    Ts = Split(TVar(i), "~")
    Cells(Deb, 1) = Ts(0)
    Cells(Deb, 1).Offset(, 1) = Ts(1)
    Cells(Deb, 1).Offset(, 2) = Ts(2)
    Cells(Deb, 1).Offset(, 3) = Ts(3)
    Cells(Deb, 1).Offset(, 4) = Ts(4)
    Cells(Deb, 1).Offset(, 5) = Ts(5)
    Cells(Deb, 1).Offset(, 6) = Ts(6)
    Cells(Deb, 1).Offset(, 7) = Ts(7)
    Cells(Deb, 1).Offset(, 8) = Ts(8)
Next i
End With
End Sub

A+ Jack 2

PS J'aimerais trouver une solution où tout est placé dans un tableau (variant ou range) puis on affiche en une seule fois avec la fonction transpose ou resiez. Si quelqu'un a une idée...
 
Dernière édition:
Re : Macro pouur centraliser des données d'autres onglets sur un onglet

Merci bcp, ca marche super bien.

Cependant, au lieu d'avoir des valeurs "dures" dans ma feuille de destination, j'aimerais que ces données soient liées à leur cellule d'origine. Càd par exemple que quand un cout de revient change dans un onglet, il faut que ca se mette également à jour dans l'onglet de destination.

Merci par avance
 
Re : Macro pouur centraliser des données d'autres onglets sur un onglet

Bonsoir romdurk,

Ci-après le nouveau code :
Code:
Sub Copier_Onglets()
Dim Onglet As String
Dim i  As Integer, k As Integer
Dim Deb As Long
Dim TVar() As String
Dim Ts() As String

k = 1
For i = 3 To ActiveWorkbook.Sheets.Count
    Onglet = Sheets(i).Name
    If Onglet = "LISTE" Or Onglet = "TRAMES" Then GoTo Fin
    With Sheets(Onglet)
        ReDim Preserve TVar(k)
        TVar(k) = "='" & Onglet & "'!C8" & "~" & "='" & Onglet & "'!C9" & "~" & "='" & Onglet & "'!C11" & "~" & "='" & Onglet & "'!C12" _
        & "~" & "='" & Onglet & "'!C25" & "~" & "='" & Onglet & "'!C26" & "~" & "='" & Onglet & "'!C20" _
        & "~" & "='" & Onglet & "'!C41" & "~" & "='" & Onglet & "'!C23"
        k = k + 1
    End With
Fin:
Next i

With Sheets("LISTE")
For i = 1 To UBound(TVar)
    Deb = Range("A1", Range("A65535").End(xlUp)).Rows.Count + 1
    Ts = Split(TVar(i), "~")
    Cells(Deb, 1) = Ts(0)
    Cells(Deb, 1).Offset(, 1) = Ts(1)
    Cells(Deb, 1).Offset(, 2) = Ts(2)
    Cells(Deb, 1).Offset(, 3) = Ts(3)
    Cells(Deb, 1).Offset(, 4) = Ts(4)
    Cells(Deb, 1).Offset(, 5) = Ts(5)
    Cells(Deb, 1).Offset(, 6) = Ts(6)
    Cells(Deb, 1).Offset(, 7) = Ts(7)
    Cells(Deb, 1).Offset(, 8) = Ts(8)
Next i
End With
End Sub
A+ Jack2
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

Retour