Résolu [RESOLU] Plusieurs formule VBA

Lirna

XLDnaute Nouveau
Bonjour,

Je me permet de revenir vers vous pour un nouveau document.
J'ai plusieurs action En VBA à faire.

Dans mon documents Excel j'ai deux tableau sur deux onglets.
Les éléments qui sont présent dans ce tableau son récupéré de 4 extrats d'un logiciel que je ne peux modifié.

Mon but ultime est le suivant :

Partie 1
- Suppression du contenu tableau 1 (onglet 1)
- Suppression du contenu tableau 2 (onglet 2)
- Récupération des éléments dans les 4 extrats et les copier-coller dans les deux tableaux correspondant

Partie 2
- Convertir les colonnes "date de création" et "date de dernière modification" en format date (actuellement fait à la main par le bouton convertir - tabulation - date)
- Dans le tableau 2 ; supprimé toutes les lignes ou "date de dernière modification" est plus vieux que 7 jours par rapport à la date du jour
- Actualisé le tableau (actuellement fait à la main avec le bouton "actualiser tout"
- Enregistré le document sous le nom "tableau hebdo" date jour (format JJ MM YYYY) sur le bureau
- Faire apparaitre un commentaire comme quoi "procédure OK"


(exemple de tableau en cours )

Je voudrais voir déjà dans un premier temps avec vous pour la partie 2.
J'ai commencer un bout de code. Mais la je flanche.

Merci par avance pour votre aide.
 
Dernière édition:

Dudu2

XLDnaute Accro
Bonjour,
Pour convertir le texte en date, voici un bout de code qui devrait t'aider, même si je n'ai pas bien compris comment tu voulais en lancer l'exécution (bouton, double-clic quelque part, activation de la feuille, ...)
VB:
Sub FormatDatesTaleaux()
    
    'Tableau1
    Call FormatTexteEnDate(Range("tableau1[Date de création]"))
    Call FormatTexteEnDate(Range("tableau1[Date de derniere modification]"))
    
    'Tableau2
    Call FormatTexteEnDate(Range("tableau2[Date de création]"))
    Call FormatTexteEnDate(Range("tableau2[Date de derniere modification]"))

End Sub

Sub FormatTexteEnDate(Colonne As Range)
    Dim i As Long
    Dim TabColonne() As Variant
    
    TabColonne = Colonne.Value
    For i = 1 To UBound(TabColonne, 1)
        If IsDate(TabColonne(i, 1)) Then TabColonne(i, 1) = CDate(TabColonne(i, 1))
    Next i
    Colonne.Value = TabColonne
    Colonne.NumberFormatLocal = "jj/mm/aaaa hh:mm"
End Sub
 

Dudu2

XLDnaute Accro
Quant à la suppression des lignes du Tableau2 dont la Date de dernière modification est de plus de 7 jours, je te propose cette fonction.
Là non plus je ne sais pas comment tu veux activer ce traitement, donc je te laisse l'intégrer selon l'option choisie.
VB:
Sub SupprimeLignesTableau2()
    Dim i As Long
    Dim NbLignesSupprimées As Long
    Dim Aujourdhui As Date
    Const NbJoursSupprime = 7
   
    Aujourdhui = Now
    NbLignesSupprimées = 0
    i = 1
   
    Do While i <= Range("Tableau2").Rows.Count
        If IsDate(Range("Tableau2[Date de derniere modification]").Cells(i)) Then
            If DateDiff("d", Range("Tableau2[Date de derniere modification]").Cells(i), Aujourdhui) > NbJoursSupprime Then
                Range("Tableau2").Rows(i).Delete
                NbLignesSupprimées = NbLignesSupprimées + 1
                i = i - 1
            End If
        End If
        i = i + 1
    Loop
   
    MsgBox NbLignesSupprimées & " ligne(s) supprimée(s)."
End Sub
 
Dernière édition:

Dudu2

XLDnaute Accro
Je vois que tu mets ton code dans ThisWorkbook.
Ce n'est pas l'endroit idéal, car on y place en général le code des fonctions directement liées aux évènements sur le Workbook (Open, Close, etc...).
Même chose avec les feuilles qui ont leurs propres évènements.
Je te conseille de placer les fonctions dont on ici parle dans un ou des Module(s) avec clic droit / Insertion / Module.
 

Créez un compte ou connectez vous pour répondre

Vous devez être membre afin de pouvoir répondre ici

Créer un compte

Créez un compte Excel Downloads. C'est simple!

Connexion

Vous avez déjà un compte? Connectez vous ici.

Haut Bas