Insérer des lignes avec macro + condition

Résolu/Fermé
sofian_ovsky Messages postés 17 Date d'inscription samedi 3 février 2018 Statut Membre Dernière intervention 28 février 2023 - 17 sept. 2018 à 09:21
titeufdu89 Messages postés 375 Date d'inscription samedi 28 juillet 2012 Statut Membre Dernière intervention 1 avril 2023 - 17 sept. 2018 à 15:07
Bonjour tout le monde,

je débute avec les macros, et j'ai besoin d'aide svp.
je veux créer une macro qui va insérer des ligne en dessus de la 1ere ligne actuelle et copier le contenu des lignes précédentes, mais avec des conditions.
en colonne Q = les mois
en colonne P = situation (actif ou non actif)
alors, je veux que ma macro crée et copie uniquement les lignes du dernier mois (sept 18) si situation (p) = actif
et renommer la colonne Q (mois) par Mois+1 (mois suivant).

j'espère que mon problème est clair

https://www.cjoint.com/c/HIrhgct8sc1

merci à l'avance
A voir également:

2 réponses

titeufdu89 Messages postés 375 Date d'inscription samedi 28 juillet 2012 Statut Membre Dernière intervention 1 avril 2023 38
17 sept. 2018 à 09:51
Bonjour,

Si j'ai bien compris, tu veux que la macro analyse chaque lignes de ton tableau et que lorsque les conditions sont respectés (à savoir que le mois soit égal au mois en cours et le statut actif) il ajoute une ligne au dessus de la ligne analysée et copie les information de la ligne encore au dessus?

Càd que si la macro analyse la ligne 5 par exemple et qu'elle correspond aux critères, on ajoute une ligne au dessus (la ligne 5 initiale se retrouvera être la ligne 6), et copier les éléments de la ligne 4 dans la ligne 5 en incrémentant le mois. Est-ce bien ce que tu souhaites?
0
sofian_ovsky Messages postés 17 Date d'inscription samedi 3 février 2018 Statut Membre Dernière intervention 28 février 2023
17 sept. 2018 à 10:15
Bonjour titeufdu89,

si la ligne 5 correspond aux critères, on ajoute une ligne en dessus, et copié les valeurs de la ligne initiale (qui est devenue 6) sur la nouvelle ligne 5. ça c'est le principe.

mais ma macro, je veux qu'elle crée en haut du tableau directement l'ensemble des lignes qui correspondent aux critères.

c'est une opération que je veux effectuer 1 fois/mois, copier la liste et les détails des voitures qu'elle sont encore active pour le calcule du cout de la location.

merci à vous
0
titeufdu89 Messages postés 375 Date d'inscription samedi 28 juillet 2012 Statut Membre Dernière intervention 1 avril 2023 38
Modifié le 17 sept. 2018 à 11:16
Voici un code qui effectuera ce que tu souhaites. Par contre, il te faudra attendre le 1er de chaque mois pour lancer la macro car elle est programmée en fonction de la date du jour. Elle recherche les lignes en "actif" ayant comme mois le mois précédant au mois actuel. Si tu lances le 30 Septembre la macro, elle t'ajoutera les lignes d'Aout 2018... La macro prend également en considération les années ainsi elle ne renverra pas les éventuelles lignes d'Août 2017 par exemple.

Option Explicit
Sub ajout_ligne()
Application.ScreenUpdating = False
Dim der As Double, i As Double, mois As Integer, annee As Double
der = Range("A65536").End(xlUp).Row

If Month(Date) = 1 Then
annee = Year(Date) - 1
mois = 12
Else
annee = Year(Date)
mois = Month(Date) - 1
End If

For i = der To 4 Step -1
    'test si les conditions sont respectés
    If Month(Range("Q" & i)) = mois And Year(Range("Q" & i)) = annee And Range("P" & i) = "ACTIF" Then
    'ajoute une ligne au dessus
    Rows("4:4").Insert Shift:=xlDown
    'copie la ligne du dessous dans la nouvelle ligne
    Rows(i + 1).Copy Rows("4:4")
    Range("Q4") = DateSerial(Year(Date), Month(Date), 1)
    i = i + 1
    End If
Next i
End Sub


Colle ce code soit dans un module soit dans la la feuille directement et tu peux créer un contrôle pour lancer la macro plus facilement

Bonne journée

Jc
0
sofian_ovsky Messages postés 17 Date d'inscription samedi 3 février 2018 Statut Membre Dernière intervention 28 février 2023
17 sept. 2018 à 14:38
merci beaucoup titeufdu89
le code marche très bien.

bonne journée
0
titeufdu89 Messages postés 375 Date d'inscription samedi 28 juillet 2012 Statut Membre Dernière intervention 1 avril 2023 38
17 sept. 2018 à 15:07
Super! ;-)
Pense a passer le statut du post en résolu, bonne continuation.

Bonne journée

Jc
0