Microsoft 365 Importer ligne si Critère respecté

eric72

XLDnaute Impliqué
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

  • test excel.xlsm
    21.9 KB · Affichages: 13

patricktoulon

XLDnaute Barbatruc
je met 5 names dans les names
leur noms sont suffisamment explicites
1637782702546.png


dans le module thisworkbook
VB:
Private Sub Workbook_Open()
mensualtransfert
End Sub

et dans un module
VB:
Sub mensualtransfert()
olddate = CDate(Replace(Names("mensual").Value, "=", ""))

If Month(Date) > Month(olddate) Then
MsgBox "le dernier transfert mensuel a été fait le " & olddate & vbCrLf & " il est tant de transfért les ligne mensuel  "

'ici tu fait ce que tu veux avec la méthode que tu veux

' une fois fait on remet la date du names("mensual") a jour avec la date du moment
Names("mensual").RefersTo = CStr(Date)
End If
End Sub

et tu fait pareil pour les trimestre


après transfert donc
il te reste plus qu'a faire un remove duplicates englobant toutes les colonnes

terminé ton transfert auto est fait
essaie dans un fichier vierge ferme le en sauvant et ré ouvre le
tu verra tu aura le message que la première fois la seconde fois il ne fera pas mensual
il faudra attendre le mois prochain a moins de modifier la date dans les names

voilà tu n'a besoins de rien d'autre ;)
 

patricktoulon

XLDnaute Barbatruc
puré tu travaille avec des tableaux structuré c'est enfantin

la dernière ligne ajouté c'est

with range("nomdetontableau").listobject.
set ligne=.listrows(.listrows.count)
'ben on met la date en colonne 1
ligne.range.cells(1)=date
end with
basta

ça sous entends que tu transfert ligne par ligne
 

patricktoulon

XLDnaute Barbatruc
moi je fait avec la colonne I
et ca donne ca avec mon sytem de name

cet macro est déclenché a l'ouverture du classeur

je met la date de la prochaine echéance dans la colonne "i"

VB:
Sub mensualtransfert()
    olddate = CDate(Replace(Names("mensual").Value, "=", ""))
    If Month(Date) > Month(olddate) Then
        MsgBox "le dernier transfert mensuel a été fait le " & olddate & vbCrLf & " il est tant de transfért les ligne mensuel  "
   For Each ro In Range("tableau1").Rows
            If ro.Cells(12) = "Mensuel" Then
               Set newline = Range("tableau2").ListObject.ListRows.Add
               newline.Range = ro.Value
            newline.Range.Cells(1, 9) = DateSerial(2021, Month(Date) + 1, Day(DateSerial(2021, Month(Date) + 2, 0)))
            End If
        Next
        ' une fois fait on remet la date du names("mensual") a jour avec la date du moment
        Names("mensual").RefersTo = CStr(Date)
    End If
End Sub
voilà c'est simple
 

Pièces jointes

  • transfert V1 patosh.xlsm
    21 KB · Affichages: 5

eric72

XLDnaute Impliqué
Bonjour Patrick,
C'est génial encore une fois, juste un petit Hic!!!
Mon tableau a évolué depuis que j'ai ouvert ce fil et comme je suis un boulet, je suis incapable d'intégrer la formule au nouveau FICHIER(ci-joint), décidemment tout cela est trop compliqué pour moi.
Désolé d'abuser !!! mais je me croyais plus malin.

ONGLET Echéancier :
Copier de la colonne "TYPE" à la colonne "Montant T.T.C" (toujours avec la même condition de départ à savoir "Mensuel")

ONGLET Achats :
Coller de la colonne "TYPE" à la colonne "Montant T.T.C"

Je comprends que cela puisse t'agacer mais...

Après je te laisse te remettre de tout ça.

Merci beaucoup beaucoup beaucoup.
Eric
 

Pièces jointes

  • transfert V1 patosh (2).xlsm
    29.9 KB · Affichages: 2