XL 2010 Copier donnée d'un onglet global selon nom de l'onglet ou la coller

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 !

Sissou71

XLDnaute Occasionnel
Bonjour,

Dans un onglet Global, je recense mois par mois des quantités.
J'ai pour chaque mois un onglet.
Je voudrais que dans chaque onglet mensuel il aille récupérer la quantité du mois.

Il semble que la fonction indirect soit mon amie mais je ne vois pas comment j'informe excel qu'il prend le nom de l'onglet (mois) dans lequel il est.

Pour plus de clarté, un fichier exemple ci-joint.
Merci pour votre aide.
Cécile
 

Pièces jointes

Bonsoir Cécile,

(...) je veux bien que tu m'expliques la partie lignes() dans le recherchev. Je comprends qu'elle fait référence au numéro de colonne mais je ne la comprends pas. (...)

=RECHERCHEV($F$1;Global!$A$1:$G$13;LIGNES($1:4);FAUX)

Une fois que RECHERCHEV a trouvé (dans le tableau Global!$A$1:$G$13 ) la ligne du mois ($F$1), il faut indiquer le numéro de colonne de la cellule à retourner. Du tableau Global, on désire retourner la valeur de la 4ème colonne, puis de la 5ème, puis de la 6ème pour terminer la 7ème.

La formule RECHERCHEV étant copiées sur des lignes successives, il faut trouver une expression qui retourne 4 sur la première ligne et qui s'incrémente de une unité à chaque fois qu'on recopie la cellule vers le bas.

C'est ici qu'intervient l'expression LIGNES($1:4)
LIGNES(Plage) renvoie le nombre de lignes de Plage.

Plage est défini comme les lignes d'une zone commençant toujours à la ligne 1 ($1)et s'étendant jusqu'à la ligne 4 ( :4) soit $1:4
LIGNES($1:4) renvoie donc le nombre 4.

Quand on recopie la formule RECHERCHEV vers le bas, l'expression LIGNES($1:4) devient respectivement:
LIGNES($1:5), LIGNES($1:6), LIGNES($1:7) termes qui retournent respectivement 5 , 6, 7
 
Dernière édition:
Bonjour à tous,🙂

Pour le fun, une solution sans formules :
VB:
Option Explicit
Sub Ventile()
Dim a, i As Long, j As Long
Dim ws As Worksheet, dico As Object
    Set dico = CreateObject("Scripting.Dictionary")
    dico.CompareMode = 1
    a = Sheets("Global").[a1].CurrentRegion.Value
    For i = 2 To UBound(a, 1)
        Set dico(a(i, 1)) = CreateObject("Scripting.Dictionary")
        dico(a(i, 1)).CompareMode = 1
        For j = 4 To UBound(a, 2)
            If a(i, j) <> "" Then dico(a(i, 1))(a(1, j)) = a(i, j)
        Next
    Next
    Application.ScreenUpdating = False
    For Each ws In Worksheets
        If dico.exists(ws.Name) Then
            With ws.Range("a3").CurrentRegion
                .Columns(2).ClearContents
                For i = 1 To .Rows.Count
                    If dico(ws.Name).exists(.Cells(i, 1).Value) Then
                        .Cells(i, 2).Value = dico(ws.Name)(.Cells(i, 1).Value)
                    End If
                Next
            End With
        End If
    Next
    Application.ScreenUpdating = True
End Sub
klin89
 
- 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