Microsoft 365 Importer ligne si Critère respecté

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

eric72

XLDnaute Accro
Bonjour à tous,
J'ai un fichier avec en feuil1 une échéance Mois,Trimestriel et une feuil2 avec un tableau dans lequel j'aimerais qu'à la première ouverture du mois les lignes viennent s'ajouter selon le critère.
Si c'est mois cela s'ajoute automatiquement (mais une seule fois par mois)
Si c'est trimestriel cela s'ajoute automatiquement en janvier, avril juillet et octobre
Je n'ai pas trouvé la solution dans les différents forums, mais vous savez à coup sur comment résoudre mon nouveau problème...
Merci à tous pour votre dévouement.
Eric
 

Pièces jointes

Bonjour,
Comme ça ne répond pas à ma question, voici le code.
VB:
Private Sub test()

If Format(s, "mm") = Format(Now, "mm") - 1 Then
    Dim fs, f, s, adresse
    Set fs = CreateObject("Scripting.FileSystemObject")
    adresse = ActiveWorkbook.Path & "\" & ActiveWorkbook.Name
    Set f = fs.GetFile("" & adresse & "")
    s = f.datecreated
    

        For Each cellule In Sheets("feuil1").Range("L2:L5")
        L = Sheets("feuil2").Range("L" & Rows.Count).End(xlUp).Row
            If cellule = "Mensuel" Then cellule.EntireRow.Copy Sheets("feuil2").Range("A" & L)
        Next cellule
        
End If

If Format(Now, "mm") = 1 Or Format(Now, "mm") = 4 Or Format(Now, "mm") = 7 Or Format(Now, "mm") = 10 Then
    Dim fs, f, s, adresse
    Set fs = CreateObject("Scripting.FileSystemObject")
    adresse = ActiveWorkbook.Path & "\" & ActiveWorkbook.Name
    Set f = fs.GetFile("" & adresse & "")
    s = f.datecreated
    

        For Each cellule In Sheets("feuil1").Range("L2:L5")
        L = Sheets("feuil2").Range("L" & Rows.Count).End(xlUp).Row
            If cellule = "trimestriel" Then cellule.EntireRow.Copy Sheets("feuil2").Range("A" & L)
        Next cellule
        
End If

    
End Sub
Associez cette macro à un bouton et elle copiera les lignes mensuelles si le mois en cours est le mois m+1 par rapport à la date de création du fichier.
Elle copiera les lignes trimestrielles si le mois en cours = 1,4,7 ou 10.
A +
 
Pardon erreur de copier coller :
Code:
Sub test()


    Dim fs, f, s, adresse
    Set fs = CreateObject("Scripting.FileSystemObject")
    adresse = ActiveWorkbook.Path & "\" & ActiveWorkbook.Name
    Set f = fs.GetFile("" & adresse & "")
    s = f.datecreated
If Format(s, "mm") = Format(Now, "mm") - 1 Then

        For Each cellule In Sheets("feuil1").Range("L2:L5")
        L = Sheets("feuil2").Range("L" & Rows.Count).End(xlUp).Row
            If cellule = "Mensuel" Then cellule.EntireRow.Copy Sheets("feuil2").Range("A" & L + 1)
        Next cellule
       
End If

If Format(Now, "mm") = 1 Or Format(Now, "mm") = 4 Or Format(Now, "mm") = 7 Or Format(Now, "mm") = 10 Then
   
        For Each cellule In Sheets("feuil1").Range("L2:L5")
        L = Sheets("feuil2").Range("L" & Rows.Count).End(xlUp).Row
            If cellule = "trimestriel" Then cellule.EntireRow.Copy Sheets("feuil2").Range("A" & L + 1)
        Next cellule
       
End If

   
End Sub
ça sert à rien de faire référence au tableau, l'ajout d'une ligne en dessous de celui ci l'étend tout seul.
La macro reste à adapter à vos besoin.
A +
 
Essayez ce code en désactivant les conditions :
VB:
Sub test()


    Dim fs, f, s, adresse
    Set fs = CreateObject("Scripting.FileSystemObject")
    adresse = ActiveWorkbook.Path & "\" & ActiveWorkbook.Name
    Set f = fs.GetFile("" & adresse & "")
    s = f.datecreated
If Format(s, "mm") = Format(Now, "mm") - 1 Then

        For Each cellule In Sheets("feuil1").Range("L2:L5")
        L = Sheets("feuil2").Range("L" & Rows.Count).End(xlUp).Row
            If cellule = "Mensuel" Then Range(Cells(cellule.Row, 1), Cells(cellule.Row, 11)).Copy Sheets("feuil2").Range("A" & L + 1)
        Next cellule
        
End If

If Format(Now, "mm") = 1 Or Format(Now, "mm") = 4 Or Format(Now, "mm") = 7 Or Format(Now, "mm") = 10 Then
    
        For Each cellule In Sheets("feuil1").Range("L2:L5")
        L = Sheets("feuil2").Range("L" & Rows.Count).End(xlUp).Row
            If cellule = "trimestriel" Then Range(Cells(cellule.Row, 1), Cells(cellule.Row, 11)).Copy Sheets("feuil2").Range("A" & L + 1)
        Next cellule
        
End If

End Sub
A +
 
C'est beaucoup mieux mais ça prend uniquement la ligne
Prêt cccc tata 3,00 € 1643 NON Prélèvement 31/12/27 10 3,00 €
pas la 1ère:
Assurances aaaa toto 1,00 € 6161 NON Prélèvement 31 1,00 €
alors que les 2 sont mensuel...
Mais ça avance.
Merci
 
Bonsoir à tous,
je me permets de relancer le sujet, j'aimerais que, à la première ouverture du mois (peu importe la date) lorsque dans le tableau de la feuille2 il y a "Mensuel" dans la colonne "Echéance", la ligne vienne directement alimenter le tableau de la feuille1, puis mettre la date du jour dans la colonne "Date du Jour" de la feuille1 et cela une seule fois dans le mois, est-ce possible?

Wayki m'a gentiment proposé une solution mais cela ne fonctionne pas!!!
Merci à tous
Eric
 

Pièces jointes

bosoir
@Wayki
ça sert à rien de faire référence au tableau, l'ajout d'une ligne en dessous de celui ci l'étend tout seul.
La macro reste à adapter à vos besoin.
1°ça c'est pas vrai pour toute les versions d'excel
2° l’utilisation de scripting filesytem object (lastaccesed ou datecreated ) c'est une erreur le fichier peut avoir été modifié sur autre chose
3° au contraire faire reference au tableau te simplifiera la tache

@eric72 nomme une plage ou même qu'une cellule quelque part ou sert toi d'un name tout simplement
mémorise y une date a l’intérieur par exemple le 01/10/2021
a l'ouverture si month(date)= month cdate(lename)+1 then et tu transferts tout les mensuel
et enfin tu change la date dans le name et tu y met celle de date

pour les trimestriel ben tu fait pareil avec un autre name sauf que c est mont(date)-3
ou tu peux test les mois en semi dur et là tu choisi ce que tu veux

pas tres compliqué a mettre en place
et c'est moins hasardeux qu'avec scripting
 
Bonsoir Patrick,
Je comprends bien mais je ne vois pas comment écrire le code d'autant plus que la copie de la ligne doit être copiée et collée dans la colonne B Avec la date du jour en colonne A, je bloque!!!
Et oui je suis perdu sans toi, lol!!!
 
- 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
8
Affichages
2 K
Retour