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

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

  • Classeur1.xlsm
    26.5 KB · Affichages: 8
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"...

chris

XLDnaute Barbatruc
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:

vgendron

XLDnaute Barbatruc
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
 

Zifox

XLDnaute Nouveau
 

Zifox

XLDnaute Nouveau
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....
 

vgendron

XLDnaute Barbatruc
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"
 

Zifox

XLDnaute Nouveau
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 ?
 

Zifox

XLDnaute Nouveau
à 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?
 

Discussions similaires

Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…