Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

tri tableau et copie suivant 2 dates

  • Initiateur de la discussion Initiateur de la discussion désespoirtotal
  • 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 !

D

désespoirtotal

Guest
Bonjour,

Je suis perdu, cela fait une semaine que je commence à "programmer" en VBA et j'ai du mal. J'aimerais copier les lignes d'un tableau comprises entre une date de début et de fin que je choisis grâce à 2 cellules(cellules avec validation liste) et je n'y arrive pas.

Pourriez vous m'aider?

Merci
 
Bonjour,
soit un tableau dates en colonne A, trié par date
dates butoirs en B1 et C1
la macro suivante copie les lignes entre les 2 dates de la colonne A à la colonne L

Sub CopieZone()
Dim Datedébut, DateFin as date
Dim i, début, fin As Long

Datedébut=Range("B1").value
Datefin=range("C1").value
i = 1
début = 0

Do: i = i + 1
Loop Until Range("A" & i).Value = Datedébut
début = i
Do: i = i + 1
Loop Until Range("A" & i).Value > DateFin
fin = i - 1
Range("A" & début, "L" & fin).Copy
End Sub
 
Re bonjour,

et merci

j'ai essayé mais ca ne marche pas il ne me colle pas les cellules.Ci joint le fichier avec les explications de ce que je voudrais faire.

Merci
 

Pièces jointes

Bonsoir désespoirtotal, tatiak.


Tu peux essayer de lier ton bouton à la procédure suivante :

Sub CopieZone()
Dim TabTemp As Variant
Dim CelDepart As Range, CelResult As Range
Dim L As Long, C As Byte
Dim D1 As Date, D2 As Date
Dim NL As Long
   With ActiveSheet
      'Dates Début et Fin
      D1 = .Cells(7, 2)
      D2 = .Cells(7, 3)
      '1ère cellule du tableau de donnée et 1ère cellule du tableau de résultat
      Set CelDepart = .Cells(9, 1)
      Set CelResult = .Cells(28, 1)
      'Chargement d'un tableau temporaire variant
      TabTemp = CelDepart.CurrentRegion.Value
      'Pour chaque ligne de donnée
      For L = 1 To UBound(TabTemp, 1)
         'Si date OK
         Select Case TabTemp(L, 1)
         Case D1 To D2
            'Copie la ligne dans le tableau résultat
            For C = 1 To UBound(TabTemp, 2)
               CelResult.Offset(NL, C - 1).Value = TabTemp(L, C)
            Next C
            NL = NL + 1
         End Select
      Next L
   End With
End Sub


Cordialement.

Didier_mDF
 
Merci à tous lesdeux,

J'ai choisi la solution de tatiak car c'est celle que je comprends le mieux(pour l'instant, en attendant de me perfectionner avec toutes les instructions VBA).

Mais les deux fonctionnent.

Merci bcoup ,bon week end à vous deux et longue vie au forum et à ce merveilleux site!!!!
 
- 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
Assurez vous de marquer un message comme solution pour une meilleure transparence.

Discussions similaires

Réponses
12
Affichages
599
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…