Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

Microsoft 365 Notifications excel dans une feuille récapitulative

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 !

Zifox

XLDnaute Nouveau
Bonjour, à tous,
Je cherche à créer un système de notification sur une feuille par rapport à des dates et numéros de machines contenus dans deux autres feuilles.

Je voudrais que les dates à moins de 21 j dans la feuille 2 colonne k et le numéro de parc qui va avec colonne d soit reporté dans la feuille 1, pour la colonne k de la feuille 2 dans la colonne h de la feuille 1, et la colonne d de la feuille 2 dans la colonne j de la feuille 1 et pour "les données de la feuille 2" que cela soit marqué ("MINES") dans la feuille 1 colonne k. Et il faut faire de même pour la feuille 3 c'est à dire si on est à moins de 21 j de la date de la colonne I, reporter cette date dans la feuille 1 dans la colonne h avec le numéro de parc de la feuille 3 colonne d dans la feuille 1 avec ici la notification en colonne I de la feuille 1 (VGP).

Je joins un fichier vierge avec j'ai essayé en code vba et en formule mais rien ne fonctionne.

J'ai essayé une macro qui est présente dans la feuil1

Pas besoin de me donner toute la réponse je veux juste comprendre comment faire.

Merci d'avance
 

Pièces jointes

Solution
Hello
un début de réponse ici
PS: tu peux te passer de tes fonctions "lignes": la première instruction que j'ai ecrite et décrite fait exactement la meme chose
VB:
Sub Delais()
    Dim delai As Integer
    ActiveSheet.Unprotect ("0000")
    Dim i As Long
    
    delai = 21 '21 jours
    'rows.Count==> c'est le nombre maximum de ligne sur une feuille excel: anciennemnt 65536 qui est maintenant 1 048 576
    'range("H" &rows.Count) = dernière ligne de la colonne H
    '.end(xlup): permet de remonter jusqu'à la première ligne NON vide
    '.row: récupère le numéro de la ligne
    LastLine = Range("H" & Rows.Count).End(xlUp).Row  'dernière ligne NON vide de la colonne H:==> si rien en H10, on a 10, alors qu'on voudrait 11
    If Range("H"...
Bonjour

Faisable par PowerQuery intégré à Excel

Pas très clair : on met quoi en Maintenance à prévoir et quoi en TYPES pour la feuille 3 ?

Par ailleurs tes dates en rouges sont dépassées et si comprends bien c'est 21 jours avant la date qu'il faut agir
 
Dernière édition:
Hello
un début de réponse ici
PS: tu peux te passer de tes fonctions "lignes": la première instruction que j'ai ecrite et décrite fait exactement la meme chose
VB:
Sub Delais()
    Dim delai As Integer
    ActiveSheet.Unprotect ("0000")
    Dim i As Long
    
    delai = 21 '21 jours
    'rows.Count==> c'est le nombre maximum de ligne sur une feuille excel: anciennemnt 65536 qui est maintenant 1 048 576
    'range("H" &rows.Count) = dernière ligne de la colonne H
    '.end(xlup): permet de remonter jusqu'à la première ligne NON vide
    '.row: récupère le numéro de la ligne
    LastLine = Range("H" & Rows.Count).End(xlUp).Row  'dernière ligne NON vide de la colonne H:==> si rien en H10, on a 10, alors qu'on voudrait 11
    If Range("H" & LastLine) <> "" Then LastLine = LastLine + 1 'cas du tablo structuré vide
    
    With Sheets("Feuil2") 'on travaille sur la feuille 2, sans avoir besoin de l'activer
        fin = .Range("K" & .Rows.Count).End(xlUp).Row 'meme chose que LastLine pour la colonne K de la feuille 2
        For i = 5 To fin 'pour chaque ligne
            If .Range("K" & i) - Now < delai Then 'si le critère est vérifié
                Sheets("Feuil1").Range("H" & LastLine) = .Range("K" & i) 'on récupère les données
                Sheets("Feuil1").Range("J" & LastLine) = .Range("D" & i)
                Sheets("Feuil1").Range("I" & LastLine) = "MINES"
                LastLine = LastLine + 1
            End If
        Next i
    End With
    
    With Sheets("Feuil3")
        'meme code à adapter
    End With
    
End Sub
 
 
Merci beaucoup,!!!
Par contre quand je lance la macro pour cette ligne Sheets("Feuil1").Range("H" & LastLine) = .Range("K" & i) cela me met l'indice n'appartient pas à la sélection ? et je ne comprends pas pourquoi....
 
avant le tableau est-ce génant ?

Normalement non, mais comme on ne connait pas ton fichier, je ne peux pas te le garantir
.. comment as tu adapté le code pour la feuille 3 ?
execute la macro en pas à pas (F8) et essaie de suivre ce qu'elle fait et à quelle moment elle se "plante"
 
Je ne suis plus sur mon ordi là mais j’ai mis i aussi en indice faut mettre un autre indice n’est-ce pas ?
 
à partir du moment où la boucle For i...next i est close, tu peux réutilser le meme indice pour refaire une nouvelle boucle
Ah dacc okk! merci
Autre question je voudrais éviter les doublons à chaque activation de la page une idée ? J'ai fais If Range("H" & LastLine) = Range("H" & LastLine) And Range("H" & LastLine) <> "" Then Exit Sub, penses-tu que soit une bonne manière de coder?
 
- 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
38
Affichages
486
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…