une aide pour des macros SVP

birac

XLDnaute Junior
Bonjour

J'ai un fichier comme mis en PJ.
La même personne peut être retrouvée une à 6 fois dans la liste, avec des années différentes.
Je souhaiterais une macro qui, en fonction de l'année (Colonne O) me transfère sur la première ligne de la personne la valeur de l'année en cours dans la colonne "A" (Colonne AG), la valeur de l'année -1 dans la colonne A-1 (Colonne AH), la valeur de l'année -2 dans la colonne A-2 (Colonne AI) et ainsi de suite jusqu'à A-5 et ensuite que les lignes suivantes concernant cette personne soient supprimées.

Une seconde macro qui sera déclenchée après et qui devra me supprimer toutes les lignes contenant l'année en cours en A (Colonne AG).

Ces deux macros doivent être totalement séparée pour un traitement différencié de mes listes.

J'ai tenté d'en faire mais apparemment, ça dépasse mes capacités actuelles aussi je viens vous demander de l'aide.

En vous remerciant par avance.

Philippe
 

Pièces jointes

  • test.xlsm
    9.8 KB · Affichages: 32
  • test.xlsm
    9.8 KB · Affichages: 33
  • test.xlsm
    9.8 KB · Affichages: 36

birac

XLDnaute Junior
Re : une aide pour des macros SVP

Bonjou Birac, bonjour le forum,


Et on la trouve cette valeur ?

Bonjour

La valeur se trouve dans la colonne O qui est la colonne ou s'affiche toutes les années, de celle en cours à A-5 (soit de 2013 à 2008).
Je viens de noter que vous préféré le xls, je mets donc aussi le fichierdans ce format.
Merci

Phlippe
 

Pièces jointes

  • test.xls
    27.5 KB · Affichages: 31
  • test.xls
    27.5 KB · Affichages: 32
  • test.xls
    27.5 KB · Affichages: 32

Robert

XLDnaute Barbatruc
Repose en paix
Re : une aide pour des macros SVP

Bonjour Birac, bonjour le forum,

Pas sûr d'avoir tout compris...
Je te propose les deux macro ci-dessous :
Code:
Public dl As Integer 'déclare la variable dl (Dernière Ligne)

Sub Macro1()
Dim cel As Range 'déclare la variable cel (CELlule)
Dim pl As Range 'déclare la variable pl (PLage)
Dim a As Integer 'déclare la variable a (Année)

With Sheets("Feuil1") 'prend en compte l'onglet "Feuil1"
    dl = .Cells(Application.Rows.Count, 1).End(xlUp).Row 'définit la dernière ligne éditée dl de la colonne 1 (=A)
    Set pl = .Range("A2:A" & dl) 'définit la plage pl
    For Each cel In pl 'boucle 1 : sur toutes les cellules de la plage pl
        a = CInt(cel.Offset(0, 14).Value) 'définit l'année a
        For col = 33 To 38 'boucle 2 : sur les colonnes 33 à 38 (AG à AL)
            .Cells(cel.Row, col).Value = a 'place l'année a
            a = a - 1 'décrémente l'année a
        Next col 'prochaine colonne de la boucle 2
    Next cel 'prochaine cellule de la boucle 1
End With 'fin de la prise en compte de l'onglet "Feuil1"
End Sub

Sub Macro2()
Dim i As Integer 'déclar la variable i (Incrément)
For i = dl To 2 Step -1 'boucle inversée des ligne dl à 2
    If Sheets("Feuil1").Cells(i, 33).Value = Year(Date) Then Rows(i).Delete 'si la valeur de la cellule correspond à l'année en cours, supprime la ligne
Next i 'prochaine ligne de la boucle
End Sub
 

birac

XLDnaute Junior
Résolu - une aide pour des macros SVP

Bonjour et merci.
Ca fonctionne bien sur la première partie mais pas sur la seconde. Ceci dit, je vais plancher dessus pour plustard éventuellement car j'ai résolu mon problème differemment en utilsant une méthode ordonnée avec gestion des doublons.
Encore merci quand même

Philippe
 

Discussions similaires

Réponses
16
Affichages
651

Statistiques des forums

Discussions
312 084
Messages
2 085 194
Membres
102 813
dernier inscrit
kaiyi