Copie d'une colonne dans une autre colonne en fonction d'une date

XKF763

XLDnaute Nouveau
Bonjour à tous,

Je suis totalement néophyte en macros Excel.
Dans le fichier ci-joint, je souhaite ajouter un bouton qui me recopie les données d'une plage de cellules vers une colonne d'un tableau en fonction d'une date (la date du jour en l'occurence).
Il s'agit pour moi d'archiver les données saisies chaque jour.

Merci d'avance
Régis
 

Pièces jointes

  • Exemple.xls
    18 KB · Affichages: 85
  • Exemple.xls
    18 KB · Affichages: 98
  • Exemple.xls
    18 KB · Affichages: 93

Fred0o

XLDnaute Barbatruc
Re : Copie d'une colonne dans une autre colonne en fonction d'une date

Bonjour XKF763 et bienvenue sur le forum

Je te propose le bout de code dans le fichier ci-dessous.

Si tu as des difficultés à le comprendre, n'hésites pas.

A+
 

Pièces jointes

  • Exemple.xls
    36.5 KB · Affichages: 115
  • Exemple.xls
    36.5 KB · Affichages: 126
  • Exemple.xls
    36.5 KB · Affichages: 121

XKF763

XLDnaute Nouveau
Re : Copie d'une colonne dans une autre colonne en fonction d'une date

Bonjour Fred0o,

et merci pour cette réponse rapide et efficace.

Je souhaiterais pouvoir effectuer la copie d'une feuille vers une autre feuille du même classeur. J'ai bien essayé d'adapter ta macro mais je n'y suis pas parvenu :(

Je te renvoie le fichier avec les 2 feuilles.

Encore un grand merci
Régis
 

Pièces jointes

  • Exemple(2).xls
    39 KB · Affichages: 116
  • Exemple(2).xls
    39 KB · Affichages: 114
  • Exemple(2).xls
    39 KB · Affichages: 106

ROGER2327

XLDnaute Barbatruc
Re : Copie d'une colonne dans une autre colonne en fonction d'une date

Bonjour à tous
Ceci, peut-être ?
Code:
[COLOR="DarkSlateGray"][B]Sub recopier()
Dim i&, dRef As Date, dates()
   dRef = Sheets("Saisie").Range("B4").Value
   dates = Sheets("BD").Range("D4:AH4").Value
   For i = 1 To UBound(dates, 2)
      If dRef = dates(1, i) Then
         With Sheets("Saisie")
            .Range(.Cells(6, 2), .Cells(.Rows.Count, 2).End(xlUp)).Copy Destination:=Sheets("BD").Range("C6").Offset(0, i)
         End With
         Exit For
      End If
   Next i
   If i > UBound(dates, 2) Then MsgBox "La date " & Format(dRef, "d/mm/yyyy") & " n'existe pas dans la feuille BD."
End Sub[/B][/COLOR]
ROGER2327
#3918


Jeudi 5 Tatane 137 (Saint Arsouille, patricien, SQ)
30 Messidor An CCXVIII
2010-W28-7T00:58:36Z
 

Cousinhub

XLDnaute Barbatruc
Re : Copie d'une colonne dans une autre colonne en fonction d'une date

Bonjour,

Bonjour, Roger :)

Une autre petite solution :

Code:
Sub recopier()
Dim Col As Byte
With Sheets("BD")
    On Error GoTo suite
    Col = Application.Match(CLng(Range("B4").Value), .Rows(4), 0)
    Range("B6:B35").Copy .Cells(5, Col)
    Exit Sub
End With
suite:  MsgBox "La date n'existe pas dans l'onglet BD"
End Sub

Bon dimanche
 

XKF763

XLDnaute Nouveau
Re : Copie d'une colonne dans une autre colonne en fonction d'une date

Re-bonjour,

J'ai essayé, mais sans succès, de transposer vos macros dans le classeur ci-joint !!!
Pour être complet, la recopie doit alimenter simultanément les feuilles BD1 et BD2 à partir de la feuille SAISIE, selon la date et sans recopier la mise en forme d'origine.
Je suis vraiment navré de vous solliciter autant !!!

Merci encore
Régis
 

Pièces jointes

  • Exemple(2).xls
    40.5 KB · Affichages: 94
  • Exemple(2).xls
    40.5 KB · Affichages: 111
  • Exemple(2).xls
    40.5 KB · Affichages: 117
Dernière édition:

ROGER2327

XLDnaute Barbatruc
Re : Copie d'une colonne dans une autre colonne en fonction d'une date

Re...
Vous posez un problème, mais vous voulez en résoudre un autre...
Pour ce nouveau problème, une nouvelle réponse :
Code:
[COLOR="DarkSlateGray"][B]Sub recopier()
Dim i&, dRef As Date, dates()
   dRef = Sheets("Saisie").Range("B4").Value
   dates = Sheets("BD1").Range("B4:AF4").Value
   For i = 1 To UBound(dates, 2)
      If dRef = dates(1, i) Then
         With Sheets("Saisie")
            .Range(.Cells(6, 2), .Cells(.Rows.Count, 2).End(xlUp)).Copy Destination:=Sheets("BD1").Range("A6").Offset(0, i)
         End With
         Exit For
      End If
   Next i
   If i > UBound(dates, 2) Then MsgBox "La date " & Format(dRef, "d/mm/yyyy") & " n'existe pas dans la feuille BD1."
   dates = Sheets("BD2").Range("B4:AF4").Value
   For i = 1 To UBound(dates, 2)
      If dRef = dates(1, i) Then
         With Sheets("Saisie")
            .Range(.Cells(6, 3), .Cells(.Rows.Count, 3).End(xlUp)).Copy Destination:=Sheets("BD2").Range("A6").Offset(0, i)
         End With
         Exit For
      End If
   Next i
   If i > UBound(dates, 2) Then MsgBox "La date " & Format(dRef, "d/mm/yyyy") & " n'existe pas dans la feuille BD2."
End Sub[/B][/COLOR]
ROGER2327
#3921


Jeudi 5 Tatane 137 (Saint Arsouille, patricien, SQ)
30 Messidor An CCXVIII
2010-W28-7T22:19:34Z
 

XKF763

XLDnaute Nouveau
Re : Copie d'une colonne dans une autre colonne en fonction d'une date

Bonsoir ROGER2327,

Tout d'abord, MERCI pour ta solution.
Je l'ai testé sur un autre classeur et tout fonctionne parfaitement.
Seul petit HIC !!! J'aimerais faire un collage spécial valeur de mes données et je n'y parviens pas malgré de longues recherches sur le forum.
Avez-vous une solution à me proposer?

Encore désolé pour mes balbutiements sur ce forum (première utilisation) :confused:

Bonne soirée
Régis
 

ROGER2327

XLDnaute Barbatruc
Re : Copie d'une colonne dans une autre colonne en fonction d'une date

Re...
(...)
Je l'ai testé sur un autre classeur et tout fonctionne parfaitement.
Seul petit HIC !!! J'aimerais faire un collage spécial valeur de mes données et je n'y parviens pas malgré de longues recherches sur le forum.
(...)
Changeons de problème, changeons de solution...
Code:
[COLOR="DarkSlateGray"][B]Sub recopier()
Dim i&, dRef As Date, dates()[COLOR="Sienna"], tmp[/COLOR]
   dRef = Sheets("Saisie").Range("B4").Value
   dates = Sheets("BD1").Range("B4:AF4").Value
   For i = 1 To UBound(dates, 2)
      If dRef = dates(1, i) Then
         With Sheets("Saisie")
            [COLOR="Sienna"]tmp = .Range(.Cells(6, 2), .Cells(.Rows.Count, 2).End(xlUp)).Value
            Sheets("BD1").Range("A6").Offset(0, i).Resize(UBound(tmp, 1), 1).Value = tmp[/COLOR]
         End With
         Exit For
      End If
   Next i
   If i > UBound(dates, 2) Then MsgBox "La date " & Format(dRef, "d/mm/yyyy") & " n'existe pas dans la feuille BD1."
   dates = Sheets("BD2").Range("B4:AF4").Value
   For i = 1 To UBound(dates, 2)
      If dRef = dates(1, i) Then
         With Sheets("Saisie")
            [COLOR="Sienna"]tmp = .Range(.Cells(6, 3), .Cells(.Rows.Count, 3).End(xlUp)).Value
            Sheets("BD2").Range("A6").Offset(0, i).Resize(UBound(tmp, 1), 1).Value = tmp[/COLOR]
         End With
         Exit For
      End If
   Next i
   If i > UBound(dates, 2) Then MsgBox "La date " & Format(dRef, "d/mm/yyyy") & " n'existe pas dans la feuille BD2."
End Sub[/B][/COLOR]
ROGER2327
#3927


Vendredi 6 Tatane 137 (Saints Robot et Cornard, citoyens, SQ)
1er Thermidor An CCXVIII
2010-W29-1T21:45:30Z
 

Discussions similaires

Statistiques des forums

Discussions
312 595
Messages
2 090 099
Membres
104 375
dernier inscrit
Willycampina