une aide pour des macros SVP

  • Initiateur de la discussion Initiateur de la discussion birac
  • 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 !

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

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

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
 
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
 
- 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

Discussions similaires

Réponses
13
Affichages
238
Retour