Synthetiser des données de plusieurs onglets

  • Initiateur de la discussion Initiateur de la discussion nonoTT
  • 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 !

nonoTT

XLDnaute Occasionnel
Bonjour à tous
J'ai 3 onglets :
- un onglet "Totaux"
- un onglet "Rejets"
- un onglet "Synthèse"

Pour chaque ligne où la valeur de la cellule A et B est identique dans les 2 onglets Totaux et Rejets,
je recherche à obtenir dans l'onglet "synthèse la valeur" de la colonne G dans l'onglet "Rejets" si elle existe sinon mettre 0, la valeur de la colonne G dans l'onglet "Totaux".
Voir les exemples.
Dans l'onglet synthèse, j'ai mis le résultat attendu.


Il faut savoir que les valeurs situées en colonne G sont obtenues par formule, il faut donc extraire la valeur.

Comment faire cela par macro ?
Cordialement.
 

Pièces jointes

Re : Synthetiser des données de plusieurs onglets

Bonjour

Ci joint un code qui devrait répondre à la question.

Code:
Dim Col As String
'parametre
' pour boucler sur la colonne 1
Nomfeuille1 = "Synthèse"
Nomfeuille3 = "Totaux"
Nomfeuille2 = "Rejets"
Col = "A"
With Sheets(Nomfeuille1)

For Each Cellule In .Range(Col & "2:" & Col & .Range(Col & .Rows.Count).End(xlUp).Row)
Dl1 = RechercheLigne(Nomfeuille2, "a", 1, 2, Cellule.Value, Cellule.Offset(0, 1))
If Dl1 > 0 Then _
Cellule.Offset(0, 2) = Sheets(Nomfeuille2).Range("g" & Dl1)
Dl1 = RechercheLigne(Nomfeuille3, "a", 1, 2, Cellule.Value, Cellule.Offset(0, 1))
If Dl1 > 0 Then _
Cellule.Offset(0, 3) = Sheets(Nomfeuille3).Range("g" & Dl1)

Next Cellule

    

End With
End Sub


'fonction pour rechercher la ligne corrrespondante
Private Function RechercheLigne(Nomfeuille As String, Colonne As String, offset1 As Byte, Lignedep As Long, valeur1 As String, valeur2 As String)
Dim Cel As Range
Dim FirstAddress As String

With Worksheets(Nomfeuille).Range(Colonne & Lignedep & ":" & Colonne & (Worksheets(Nomfeuille).Range(Colonne & Worksheets(Nomfeuille).Rows.Count).End(xlUp).Row))
    Set Cel = .Find(valeur1, LookIn:=xlValues)
    If Not Cel Is Nothing Then
        FirstAddress = Cel.Address
        Do
            If valeur2 <> "" Then
                If valeur2 = Cel.Offset(0, offset1) Then
                    RechercheLigne = Cel.Row
                    Exit Function
                End If
            Else
                RechercheLigne = Cel.Row
                Exit Function
            End If
            Set Cel = .FindNext(Cel)
        Loop While Not Cel Is Nothing And Cel.Address <> FirstAddress
    End If
End With
RechercheLigne = 0
End Function


A tester

JP
 
Re : Synthetiser des données de plusieurs onglets

BOnjour
Je ne peux pas exécuter la macro il m'inndique une erreur de compilation Type d'argument ByRef incompatible au niveau de cette ligne de code
Code:
Dl1 = RechercheLigne(Nomfeuille2, "a", 1, 2, cellule.Value, cellule.Offset(0, 1))
Comment m'en sortir.
Merci
 
- 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

Réponses
5
Affichages
700
Réponses
43
Affichages
813
Réponses
4
Affichages
265
  • Question Question
XL 2021 planning
Réponses
5
Affichages
432
Réponses
3
Affichages
289
Retour