XL 2019 Copie une partie des colonnes d'un tableau dans une autre feuille sans les entêtes de colonne

DJISA

XLDnaute Occasionnel
Bonsoir le forum!
J'ai deux tableaux se trouvant dans deux feuilles différentes d'un même classeur: Feuil1 = feuille d'origine et Feuil2 = feuille de destination.
Tableau Feuil1(entêtes comprises) va de D4 à R4
Tableau Feuil2(entêtes comprises) commence à partir de A11.
Je voudrais à chaque fois qu'un nouvel élève est enregistré dans la Feuil1 mettre à jour la feui2 en copiant la plage D5 à M5 de la Feuil1.
Les données seront toujours collées dans feuil2 à partir de A12.
Merci
DJISA
 

Staple1600

XLDnaute Barbatruc
Bonjour DJISA

Excel possède un bel outil: l’enregistreur de macros
Quand on l'utilise, il génère du code VBA prêt à l'emploi
Comme ci-dessous
VB:
Sub Macro1()
Range("D5:R5").Select
Selection.Copy
Sheets("Feuil2").Select
Range("A12").Select
ActiveSheet.Paste
End Sub
 

Staple1600

XLDnaute Barbatruc
Re

Après on peut nettoyer le code obtenu par l'enregistreur
VB:
Sub Macro2()
Sheets("Feuil1").Range("D5:R5").Copy Sheets("Feuil2").Range("A12")
End Sub

EDITION: Et si j'ai bien compris, on peut au final obtenir, ceci
VB:
Sub Macro3()
Sheets("Feuil1").Range("D5:R5").Copy Sheets("Feuil2").Cells(Rows.Count, "A").End(3)(2)
End Sub
 
Dernière édition:

Staple1600

XLDnaute Barbatruc
Re

N'ayant pas de fichier exemple (et selon mon interprétation de la question)
Le code ci-dessous ( à mettre dans le code de la feuille 1)
VB:
Private Sub Worksheet_Change(ByVal T As Range)
Dim Tb: Tb = Range("D5:R5").Value
If Not Intersect(T, Me.Range("D:R")) Is Nothing Then
If Application.CountA(Range(Cells(T.Row, "A"), Cells(T.Row, "R"))) = 15 Then
Sheets("Feuil2").Cells(Rows.Count, "A").End(3)(2).Resize(, UBound(Tb, 2)).Value = Tb
Erase Tb: Range("D5:R5") = ""
End If
End If
End Sub
Fait la chose suivante:
Dés que la ligne D5:R5 est remplie sur la feuille 1, elle est recopiée (en valeur seule) sur la feuille 2 vers le bas en partant de 1ère cellule non vide en colonne A de la feuille 2.
Puis D5:R5 est effacée de la feuille 1, en vue de la prochaine saisie.
 

DJISA

XLDnaute Occasionnel
Salut Staple1600, le forum!
Je n'ai pas encore essayé ton code car je constate qu'il inclut des colonnes à ne pas copier. Seulement la plage ("D5:M") doit être copiée et non tout le tableau. Ensuite je souhaite que les données de la feuille d'origine, ici la feuil1, restent intactes.
Je joins un fichier exemple. Lire les annotations s'il te plait.
Merci pour le soutien
DJISA
 

Pièces jointes

  • Fichierexemple.xlsm
    43.5 KB · Affichages: 4

DJISA

XLDnaute Occasionnel
Bonjour Staple1600, le Forum!
Je n'avais pas remarqué le message 5. Oui tous les noms et prénoms sont fictifs. D'ailleurs j'ai mis pour tous la même de date et lieu de naissance, le même numéro de téléphone...
Toutes mes excuses!
Merci
DJISA
 

Staple1600

XLDnaute Barbatruc
Bonjour le fil, DJISA

•>DJISA
Je te laisse tester et me redire si cela correspond au but visé
VB:
Sub Copier()
Dim LO As ListObject
Set LO = Sheets("Feuil2").ListObjects("Tableau711")
LO.ListRows.Add(1).Range(1, 1).Resize(, 10) = Sheets("Feuil1").Cells(Rows.Count, "D").End(3).Resize(, 10).Value
End Sub
 

Discussions similaires

Statistiques des forums

Discussions
311 735
Messages
2 082 024
Membres
101 873
dernier inscrit
excellllll