Macro pour archiver une ligne sur une autre feuille dans un tableau annuel...

Christian0258

XLDnaute Accro
Bonjour à tout le forum,

Je souhaiterais, à nouveau, votre aide afin d'écrire une macro pour archiver une ligne mensuelle
dans un tableau annuel sur une autre feuille...

voir fichier joint


Je vous remercie par avance, pour le temps que vous voudrez bien vouloir m'accorder.

Bien amicalement,

Christian
 

Pièces jointes

  • ArchivageMensuel.xls
    66 KB · Affichages: 47

job75

XLDnaute Barbatruc
Re : Macro pour archiver une ligne sur une autre feuille dans un tableau annuel...

Bonjour Christian,

Bah en Bilan!E10 ou Bilan!F10 aucune formule ne renvoie de dates.

Avec par exemple =DATE(An;1;1) il sera très facile d'utiliser la fonction EQUIV ou en VBA Application.Match.

Tu devrais alors arriver à t'en sortir tout seul.

A+
 

Christian0258

XLDnaute Accro
Re : Macro pour archiver une ligne sur une autre feuille dans un tableau annuel...

Re, le forum, job75,

Bonjour, job75, en Bilan!E10 et F10 la formule renvoie la date mois, et le but étant de placer la ligne 1 de la feuille Extraction en lieu et place du mois correspondant sur la feuille Bilan...
Concernant la fonction EQUIV associée avec =DATE(An;1;1), je ne maîtrise pas trop...il y a en plus une deuxième condition (Activité) à prendre en compte...peux-tu me donner une ébauche, même si je préférerais en VBA...


Merci pour ton aide.

Bien à toi,
Christian
 
Dernière édition:

job75

XLDnaute Barbatruc
Re : Macro pour archiver une ligne sur une autre feuille dans un tableau annuel...

Re,

Bon ce n'est pas EQUIV qu'il faut utiliser.

Avec SOMMEPROD en H10 :

Code:
=SOMMEPROD((ANNEE(Extraction!$B$11:$B$42)=An)*(MOIS(Extraction!$B$11:$B$42)=MOIS($E10))*(Extraction!$C$11:$C$42=$G10)*Extraction!D$11:D$42)
et en H11 :

Code:
=SOMMEPROD((ANNEE(Extraction!$B$11:$B$42)=An)*(MOIS(Extraction!$B$11:$B$42)=MOIS($E11))*(Extraction!$C$11:$C$42<>$G10)*Extraction!D$11:D$42)
Puis Copier-Collage spécial-Formules de H10:H11 sur H10:AE15 et sur les trimestres en-dessous.

Formules évidentes en H16:H17.

Bien noter qu'il s'agit de dates en colonne E.

Fichier joint.
 

Pièces jointes

  • ArchivageMensuel(1).xls
    88 KB · Affichages: 52

Christian0258

XLDnaute Accro
Re : Macro pour archiver une ligne sur une autre feuille dans un tableau annuel...

Re, le forum, job75,

Merci pour ces formules complexes que je garde.
Mais finalement, si je souhaitais par macro, c'est que dans mon cas des formules ne peuvent pas convenir seule une macro peut copier coller les données en fonction des mois extrait en feuille extraction...

En effet la feuille Extraction reçoit, au fil du temps, en ligne 1, tous les mois de l'année.

A vous lire.

Bien à vous,
Christian
 

job75

XLDnaute Barbatruc
Re : Macro pour archiver une ligne sur une autre feuille dans un tableau annuel...

Bonjour Christian, le forum,

J'avais complètement zappé ton affaire de ligne 1...

Car en fait je n'en vois pas l'utilité.

Mais bon si tu y tiens vois cette macro dans le fichier joint :

Code:
Private Sub Worksheet_Change(ByVal Target As Range)
Dim lig As Variant, ncol%
With Sheets("Bilan")
  lig = Application.Match([B1], .[F:F], 0)
  If IsError(lig) Then Exit Sub
  If [C1] = "Autres" Then lig = lig + 1
  ncol = Cells(1, Columns.Count).End(xlToLeft).Column - 2
  .Cells(lig, "G").Resize(, ncol) = [C1].Resize(, ncol).Value
End With
End Sub
Bonne journée.
 

Pièces jointes

  • ArchivageMensuel VBA(1).xls
    78.5 KB · Affichages: 55

job75

XLDnaute Barbatruc
Re : Macro pour archiver une ligne sur une autre feuille dans un tableau annuel...

Re,

En fait ce que je n'avais pas compris c'est que dans la feuille "Extraction" il y a toujours un seul mois.

Maintenant je vois l'utilité de la ligne 1.

A+
 

Christian0258

XLDnaute Accro
Re : Macro pour archiver une ligne sur une autre feuille dans un tableau annuel...

Re, le forum, job75,

Oui la ligne 1 sert à ça...

Dis-moi, job75, si on veut passer directement voir le résultat dans la feuille Bilan et donc ne pas avoir à valider une cellule dans la feuille Extraction, comment modifier ta macro...

à te lire,

Encore merci pour ton aide.

Bien à toi,
Christian
 

job75

XLDnaute Barbatruc
Re : Macro pour archiver une ligne sur une autre feuille dans un tableau annuel...

Re,

En fait c'est mieux avec un bouton :

Code:
Private Sub CommandButton1_Click()
Dim lig As Variant, ncol%
With Sheets("Bilan")
  lig = Application.Match([B1], .[F:F], 0)
  If IsError(lig) Then Exit Sub
  If [C1] = "Autres" Then lig = lig + 1
  ncol = Cells(1, Columns.Count).End(xlToLeft).Column - 2
  .Cells(lig, "G").Resize(, ncol) = [C1].Resize(, ncol).Value
  .Activate
End With
End Sub
Fichier (2).

A+
 

Pièces jointes

  • ArchivageMensuel VBA(2).xls
    87.5 KB · Affichages: 58

Ray97

XLDnaute Nouveau
bonjours à tous,
j'ai regarder le code qui a été fait avant pour m'aider à corriger mon soucis mais j'y arrive pas . Pouvez vous m'aider merci.
J'ai un résultat d'un filtre (liste ) et je veux le sélectionner et le couper et le coller dans une autre feuille .

voilà le code:

If .AutoFilterMode Then .AutoFilterMode = False
.Range("A3").AutoFilter Field:=1, Criteria1:=False '"VRAI"
.Range("A4", .Cells(.Rows.Count, "A").End(xlUp).Offset(0, .Cells(1, .Columns.Count).End(xlToLeft).column - 1)).SpecialCells(xlCellTypeVisible).Cells.Select
End if

'on les copie
Selection.Cut
I = Sheets("Archives").Range("A65536").End(xlUp).Row + 1
Sheets("BASE DE DONNEES").Range("A3:AQ1900").Copy Destination:=Sheets("Archives").Range("I")
Sheets("Archives").Select
Tu séléctionnes le classeur F1 puis la feuille 2 puis la cellule A1
l = ActiveSheet.["A65536"].End(x1Up).Row + 1



Range("A3" & I).Select
ActiveSheet.Paste
ActiveSheet.Cells(l, 1) = Tdate ' mettre la date à chaque fois qu'on archive
 

Discussions similaires

Statistiques des forums

Discussions
312 747
Messages
2 091 605
Membres
105 007
dernier inscrit
adla