XL 2021 Copier/Coller des valeurs d’une feuille à une autre à partir d’une cellule

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 !

MANU64360

XLDnaute Nouveau
Bonjour à toutes et à tous,

J’aimerai modifier un fichier qui jusqu’à présent toutes les saisies se font manuellement (avec tous les risques que ça comporte), aujourd’hui le fichier comporte 15 feuilles et il va sent rajouter une par an.

Le but c’est de transférer plusieurs valeurs d’une feuille dans une autre qui elle comporte des graphiques, des calculs mais qui n’est pas accessible à tous les utilisateurs du fichier.

Le but de ma demande aujourd’hui :

si la cellule L2 de la feuille Bilan affiche 2023 on transfère les valeurs de la feuille 2023

si la cellule L2 de la feuille Bilan affiche 2024 on transfère les valeurs de la feuille 2024 en dessous de 2023

si la cellule L2 de la feuille Bilan affiche 2025 on transfère les valeurs de la feuille 2025 en dessous de 2024

Ainsi de suite….

Mais si la cellule L2 de la feuille Bilan affiche 2023 on transfère les valeurs de la feuille 2023 en écrasant les anciennes valeurs existantes (Ne pas créer de nouvelle ligne en dessous de la dernière)

J’ai créé une petite macro, vu mon niveau en VBA je suis incapable d’aller plus loin.

J’espère avoir été clair dans ma demande, n’hésitez pas à poser des questions si besoin.

Fichier test avec ses infos en PJ

Merci d'avance de votre aide
 

Pièces jointes

Solution
Bonjour à tous,

La macro affectée au bouton :
VB:
Sub Tranfert_Donnee()
Dim f, dest As Range
With Sheets("Bilan")
    f = CStr(.[L3]) 'à adapter
    Set dest = .[E4] 'à adapter
End With
Application.ScreenUpdating = False
On Error Resume Next
With Sheets(f)
    If Err Then
        If f <> "" Then MsgBox "La feuille '" & f & "' n'existe pas !", 48
        Exit Sub
    End If
    dest(2).Resize(, 5).Insert xlDown, xlFormatFromRightOrBelow 'insère une ligne en haut du tableau
    dest(2) = f
    dest(2, 2).Resize(, 4) = .[B14:E14].Value2 'copie les valeurs
End With
With dest.CurrentRegion
    .Sort dest, xlAscending, Header:=xlYes 'tri
    .RemoveDuplicates 1, Header:=xlYes 'supprime les années en doublons
End With
End Sub
A+
Bonjour

Pourquoi ne pas utiliser des tableaux structurés correctement nommés et une synthèse par PowerQuery ?

Il suffit d'actualiser le résultat chaque fois que nécessaire (clic droit ou bouton déjà existant Données, Actualiser tout

Cette solution utilisera automatique tout nouveau tableau dont le nom commencera par t_ (t_2006 par exemple)

On peut ne pas afficher la ligne d'en-tête du tableau résultant...
 

Pièces jointes

Bonjour à tous,

La macro affectée au bouton :
VB:
Sub Tranfert_Donnee()
Dim f, dest As Range
With Sheets("Bilan")
    f = CStr(.[L3]) 'à adapter
    Set dest = .[E4] 'à adapter
End With
Application.ScreenUpdating = False
On Error Resume Next
With Sheets(f)
    If Err Then
        If f <> "" Then MsgBox "La feuille '" & f & "' n'existe pas !", 48
        Exit Sub
    End If
    dest(2).Resize(, 5).Insert xlDown, xlFormatFromRightOrBelow 'insère une ligne en haut du tableau
    dest(2) = f
    dest(2, 2).Resize(, 4) = .[B14:E14].Value2 'copie les valeurs
End With
With dest.CurrentRegion
    .Sort dest, xlAscending, Header:=xlYes 'tri
    .RemoveDuplicates 1, Header:=xlYes 'supprime les années en doublons
End With
End Sub
A+
 

Pièces jointes

Dernière édition:
Bonjour et bienvenu sur le forum
Ci joint ma solution

A+ François
Merci à tous les trois pour vos réponses.

Fanfan38:
Je suis désolé dans mon explication je me suis mal exprimé : le classeur d'essai classeur ne comportait que 4 feuilles (pour l'essai).
En réalité mon vrai fichier comporte des années précédentes (2017 2018 2019 2020 2021 etc ...) et il comportera des années futures (2026 2027 2028 etc ....)
J'ai juste rajouté de feuilles dans le fichier pour vous aider à comprendre
Pour le reste à première vue ça semble bien correspondre à mon besoin
Merci pour votre patience

Lolote: 83 quand je lance la macro il ne se passe rien (pardonne mon ignorance)

Chris: les personnes qui utilise ce fichier non pas beaucoup de compétences Excel, nous sommes une petite association de bénévole pour certains un peu âgé, il me parait plus judicieux de cliquer sur un simple bouton.

Merci encore à tous pour votre patience et vos solutions


 
Merci à tous les trois pour vos réponses.

Fanfan38:
Je suis désolé dans mon explication je me suis mal exprimé : le classeur d'essai classeur ne comportait que 4 feuilles (pour l'essai).
En réalité mon vrai fichier comporte des années précédentes (2017 2018 2019 2020 2021 etc ...) et il comportera des années futures (2026 2027 2028 etc ....)
J'ai juste rajouté de feuilles dans le fichier pour vous aider à comprendre
Pour le reste à première vue ça semble bien correspondre à mon besoin
Merci pour votre patience

Lolote: 83 quand je lance la macro il ne se passe rien (pardonne mon ignorance)

Chris: les personnes qui utilise ce fichier non pas beaucoup de compétences Excel, nous sommes une petite association de bénévole pour certains un peu âgé, il me parait plus judicieux de cliquer sur un simple bouton.

Merci encore à tous pour votre patience et vos solutions


 
RE
Chris: les personnes qui utilise ce fichier non pas beaucoup de compétences Excel, nous sommes une petite association de bénévole pour certains un peu âgé, il me parait plus judicieux de cliquer sur un simple bouton.
On peut mettre le bouton dans la barre de lancement rapide, là où il est judicieux de mettre les boutons les plus utiles non présents dans l'onglet accueil) ou bien un bouton sur la feuille avec une ligne de code...
 
- 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
46
Affichages
2 K
Retour