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

L

Ldonstyle

Guest
Bonjour a tous,

Je suis debutant en VBA et malgre mes recherches je n'arrive pas à debloquer la situation.

Je m'explique, un contrat est affilier à un classeur et regroupe differents sites (tous identiques). Le but etant lorsqu'il arrive à échéance une alerte s'affiche. Chose que j'ai réussi à faire par le biais de formule excel.
Maintenant ce que je souhaite (et que je n'arrive pas a faire) c'est que sur le premier classeur soit compiler et afficher toutes les "alertes" en précisant le site et le type de contrat. Je joins le fichier en question qui sera plus explicite.

Merci de votre aide
 

Pièces jointes

Re : Echeancier

Bonsoir,
Dans un module standard
Code:
Sub Echeancier()
Dim sh As Worksheet, rng as Range, c As Range, tablo()
Dim adresse$, i%, x%
For Each sh In Sheets
    If sh.Name Like "Contrat*" Then
        With sh
            Set rng = .Range("E2:E" & .Range("E65000").End(xlUp).Row)
            With rng
                Set c = .Find("Alerte", , xlValues)
                If Not c Is Nothing Then
                    adresse = c.Address
                    Do
                    x = x + 1
                    ReDim Preserve tablo(1 To 5, 1 To x)
                    tablo(1, x) = sh.Name
                    For i = 2 To 5
                        tablo(i, x) = c.Offset(0, i - 6)
                        Next
                    Set c = .FindNext(c)
                    Loop While Not c Is Nothing And c.Address <> adresse
                End If
            End With
        End With
    End If
Next
With Sheets("Alerte")
    .Range("A1").Resize(UBound(tablo, 2), UBound(tablo, 1)) = Application.Transpose(tablo)
End With
End Sub
A+
kjin
 
Re : Echeancier

C'est exactement merci.
Je lui ai apporte quelques modifications (uniquement dans la forme), mais je souhaiterais pouvoir ajouter une condition.
En effet le msg alerte apparait mm si les cellules sont vides.
Pourrait ton ajouter une condition si et seulement si les cellules de date de debut à savoir colonne C est renseigne alors on peut appliquer la formule alerte??

J'ai essayé =SI(ET(NON(ESTVIDE(C7));AUJOURDHUI()<D7-30;AUJOURDHUI()<E7-30;AUJOURDHUI()<F7-30);"";"Alerte") mais cela ne convient pas.

Merci
 
Re : Echeancier

Pour qu'il y ait une date de fin il faut une date de début. Or ce n'est pas dit qu'il y ait une date de début pour chaque site mais avec mes conditions j'ai alerte qui s'affiche tout le temps.

Ce que je souhaite c'est que "Alerte" ne s'affiche que si

Condition 1 : La case C est validée
Condition 2 : l'une des 3 dates n'est pas validé.( J'ai ajouter une date de fin, Echeance assurance et echeance visite) qui explik ma longue formule ET(OU).

Merci de ton aide
 
Re : Echeancier

Rebonjour,

Je souhaiterais apporter une modification.
En effet si il n'y a pas d'alertes dans les classeurs j'ai le msg d'erreur suivant
Erreur d'execution 9 : l'indice n'appartient pas à la sélection et ça me renvoie au débogage à la ligne suivante :
.Range("A2").Resize(UBound(tablo, 2), UBound(tablo, 1)) = Application.Transpose(tablo).
L'idée est que je souhaite afficher les alertes mais par exemple si rien n'est à échéance d'avoir un msg par exemple "tout est ok"

Merci de votre aide
 
Re : Echeancier

Bonjour,
Désolé, c'est un oubli de ma part
Il suffit en l'occurrence de tester que x > 0 avant de transférer les données
Code:
Sub Echeancier()
Dim sh As Worksheet, rng As Range, c As Range, tablo()
Dim adresse$, i%, x%
'...
If x = 0 Then '<--- ICI
    MsgBox "No problem"
    Exit Sub
End If
With Sheets("Alerte")
    .Range("A1").Resize(UBound(tablo, 2), UBound(tablo, 1)) = Application.Transpose(tablo)
End With
End Sub
A+
kjin
 
Re : Echeancier

Bonjour,

Je reviens vers vous afin d'avoir un conseil.
En effet, je souhaiterais savoir s'il est possible d'effecteur l'analyse des alertes sans avoir à ouvrir le fichier et ensuite d'envoyer un mail la personne en charge ou responsable de ce fichier.
Si ce n'est pas possible, je souhaiterais envoyer uniquement s'il y a des alertes ds le premier onglet les lignes concernés via email.

Merci
 
- 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
Assurez vous de marquer un message comme solution pour une meilleure transparence.
Retour