Microsoft 365 copie automatique d'une feuille excel vers une autre en rentrant le nom par exemple

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

Delaye JC

XLDnaute Nouveau
Bonjour, j'ai un tableau d'adherents sur plusieurs années.
j'aimerais quand j'entre les nom sur l'année en cours que excel recopie automatiquement les données sur les années precedentes.
Pouvez vous m'aider
 
Solution
Donc il vous faut une solution par formules Excel.

Définissez les noms An Preced1 Preced2 comme indiqué dans le fichier joint.

Lors de la création de la feuille entrez cette formule en E3 à copier vers la droite :
Code:
=SI(SIERREUR(RECHERCHEV($D4;Preced1;COLONNE()-3;0);0)=0;SIERREUR(RECHERCHEV($D4;Preced2;COLONNE()-3;0);0);SIERREUR(RECHERCHEV($D4;Preced1;COLONNE()-3;0);0))
Les valeurs zéro sont masquées par les Options avancées (menu Fichier-Options).

Dans les feuilles '2023_2024' et '2024_2025' j'ai nettoyé la colonne D avec la macro du post #20.

Pour tester j'ai copié '2024_2025'!D3: D202 vers '2025_2026'!D3, l'opération se fait chez moi en 0,14 seconde.

Une fois tous les noms entrés vous pourrez supprimer les...
Bonjour,
Avez-vous un fichier Excel avec des données anonymisées?
Avec une formule Excel, c'est possible, par contre si vous voulez que les données se copient vraiment dans l'autre fichier ou feuille, je crois qu'il vous faudra une solution VBA.
 
Bonjour,
Votre problème est que vous avez des noms identiques qu'excel va considérer comme doublons (exemple pour Delaye)
Le mieux serait d'utiliser le chiffre que vous avez en colonne A ou mieux la colonne O qui dispose d'un numéro unique
Il vous suffirait d'entrer ce numéro en colonne O pour avoir les infos demandées
Est-ce possible pour vous ?

Crdlt
 
Bonjour,
Je suis d'accord avec Dan.
Ici, on copie les informations du premier qu'on trouve dans la liste. On peux aussi copier les informations du dernier...
On ramène les infos colonne pas colonne!

La formule est stricte, on ramène les informations que du 2024_2025! Par contre on peut changer la formule pour prendre les infos de l'année précédente (voir MDR)
 

Pièces jointes

Voici un tableau test,
Donc pour résumer,
prennons la Colonne D pour rentrer un numero unique, afin de recuperer les info des colonnes E à N sur les 2 feuille precedente.
Ex: je rentre le numero colonne D sue l'année 2025/2026, la formule recupere les données sur les feuille 2023/2024 et 2024/2025.
 

Pièces jointes

Dernière édition:
Bonjour à tous,

Une solution VBA, voyez le fichier .xlsm joint et cette macro dans ThisWorkbook :
VB:
Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range)
Dim an%, preced1 As Worksheet, preced2 As Worksheet, i&, j&, lig&, r As Range, col%
an = Val(Sh.Name)
If an = 0 Then Exit Sub
Set Target = Intersect(Target, Sh.Range("D3:D" & Sh.Rows.Count), Sh.UsedRange)
If Target Is Nothing Then Exit Sub
Application.ScreenUpdating = False
Application.EnableEvents = False 'désactive les évènements
On Error Resume Next
Set preced1 = Sheets(an - 1 & "_" & an)
Set preced2 = Sheets(an - 2 & "_" & an - 1)
For Each Target In Target 'si entrées multiples (copier coller)
    i = 0: j = 0: lig = Target.Row
    i = Application.Match(Target, preced1.Columns(4), 0)
    j = Application.Match(Target, preced2.Columns(4), 0)
    Set r = Sh.Cells(lig, 5).Resize(, 10) 'colonnes E à N
    For Each r In r
        col = r.Column
        If IsEmpty(r) Then r = preced1.Cells(i, col): If IsEmpty(r) Then r = preced2.Cells(j, col)
Next r, Target
Application.EnableEvents = True 'réactive les évènements
End Sub
Elle se déclenche quand on entre ou efface des valeurs en colonne D.

A+
 

Pièces jointes

Dernière édition:
Bonjour, tu as proposé une bonne solution, je ne mettrai pas ma proposition à jour pour répondre aux autres demandes.
Peux-tu en 2026-2027 aller lire dans 2025-2027 et si tu ne trouves rien, aller dans 2024-2025 et ainsi de suite?
Je n'ai pas voulu faire ça car quand on ajoute une "année" il faut tout refaire et je me doute aussi que Delaye JC va écraser des formules en ajoutant des noms, donc ça ne me semble pas non plus une bonne solution, juste un dépannage pour cette année et la suivante mais ça n'est pas viable s'il y a d'autres saisies
 
Autre solution avec des tableaux VBA pour gagner du temps :
VB:
Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range)
Dim an%, preced1 As Worksheet, preced2 As Worksheet, PlageFormule As Range, formule$, i&, j&, zone As Range, tablo, n&, lig&, r As Range, a, b, k%
an = Val(Sh.Name)
If an = 0 Then Exit Sub
Set Target = Intersect(Target, Sh.Range("D3:D" & Sh.Rows.Count), Sh.UsedRange)
If Target Is Nothing Then Exit Sub
Application.ScreenUpdating = False
Application.EnableEvents = False 'désactive les évènements
On Error Resume Next
Set preced1 = Sheets(an - 1 & "_" & an)
Set preced2 = Sheets(an - 2 & "_" & an - 1)
Set PlageFormule = Intersect(Sh.Columns(13), Target.EntireRow) 'colonne M
formule = PlageFormule(1).FormulaR1C1 'mémorise
PlageFormule = False 'supprime les formules
For Each zone In Intersect(Target.EntireRow, Sh.Columns(5).Resize(, 10)).Areas 'colonnes E à N
    tablo = zone 'matrice, plus rapide
    n = 0
    For Each r In zone.Rows
        n = n + 1
        i = 0: j = 0: lig = r.Row
        i = Application.Match(r.Cells(1, 0), preced1.Columns(4), 0)
        j = Application.Match(r.Cells(1, 0), preced2.Columns(4), 0)
        a = "": b = ""
        a = preced1.Range(Replace(r.Address, lig, i))
        b = preced2.Range(Replace(r.Address, lig, j))
        For k = 1 To 10
            If IsEmpty(tablo(n, k)) Then tablo(n, k) = a(1, k): If IsEmpty(tablo(n, k)) Then tablo(n, k) = b(1, k)
    Next k, r
    zone = tablo 'restitue le tableau modifié
Next zone
PlageFormule = formule 'restitue les formules
Application.EnableEvents = True 'réactive les évènements
End Sub
Avec le copier-coller du post précédent cette macro s'exécute en 0,04 seconde, c'est 12 fois plus rapide !
 

Pièces jointes

Dernière édition:
- 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