Macro plusieurs feuille

Bonsoir,

A essayer :

Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range)
    Dim k%, n%, r As Range
    Select Case Sh.Name
        Case "Visite médicale"
            k = 11
        Case "Badge"
            k = 10
        Case "Permis civil"
            k = 16
        Case "Permis Piste", "Sureté"
            k = 12
        Case Else
            Exit Sub
    End Select
    If Not Intersect(Sh.Columns(Chr(64 + k) & ":" & Chr(65 + k)), Target) Is Nothing Then
        For Each r In Target.Rows
            n = r.Row
            If n < 3 Then Exit Sub
            With Sh
                If .Cells(n, k + 1).Value <> "" Then
                    .Cells(n, 2).Value = "ok"
                ElseIf .Cells(n, k).Value <> "" Then
                    If .Cells(n, k).Value < Date Then
                        .Cells(n, 2).Value = 0
                    Else
                        .Cells(n, 2).Value = DateDiff("d", Date, .Cells(n, k).Value)
                    End If
                End If
            End With
        Next r
    End If
End Sub

A mettre dans le module ThisWorkbook.

Conçue pour te permettre de rétablir en bloc la situation pour chaque feuille concernée :

  • Effacer les formules en B (tu peux également effacer la formule en A2 qui ne servira plus.
  • Dans la colonne des dates de RV, qui varie selon les feuilles, sélectionner les données déjà inscrites, les copier et les coller sur elles-mêmes (ce qui lancera la macro, qui traitera toutes les lignes ; NB- l'action sur une seule colonne suffit, la macro tient compte des deux).

Par la suite, la macro réagira selon les dates portées dans la colonne ou la mention dans la colonne voisine.

Si d'autres feuilles devaient s'ajouter pour ce traitement, pour qu'elles soient prises en compte dans la macro, il suffira d'ajouter leur nom dans l'instruction Select Case : ajouter un Case "nom de feuille" avec en dessous : k = numéro col. date , OU si ce numéro de col. est commun avec une feuille déjà inscrite, ajouter simplement le nom de la feuille (entre guillemets) à la suite sur la ligne Case.

Cordialement

Re

Bon vu que MFrerrand semble vouloir prendre le lead sur ce fil, je le laisse continuer avec toi

Crlt

Salut Dan,

Je n'ai fait qu'une proposition. Il peut y en avoir d'autres... !

D'autant que pour ce type de problème, ce n'est qu'après tests répétés qu'on peut choisir la meilleure solution (ou la moins mauvaise).

Je n'étais pas persuadé au départ que la lenteur soit provoquée par les formules. S'il semble que ce soit le cas...

J'ai tout de même encore une arrière impression qu'il pourrait y avoir autre chose...

(Il reste toujours la solution de rebâtir le classeur... !)

Cordialement

Bonjour MFerrand, Dan

Merci de vous préoccuper de mon post qui à priori à l'air intéressant pour les profs comme vous.

MFerrand

j'ai suivi tes instructions en mettant ta macro en place, puis après plusieurs essais cela à l'air de fonctionner. Je ne cache pas qu'il a fallu que j'apporte quelques modifications (dû mon silence durant ce temps) comme supprimer le multipage sur l'UF qui au final ne sert à rien et refais un UserForm simple et amélioration des formules pour mes alertes.

Sincèrement je ne m'attendais pas à un résultat aussi satisfaisant comme quoi quand on métrise bien le VBA on fais se que l'on veux.

Il reste un souci de combobox5_Change à résoudre sur le nouveau UF que j'ai refais mais pour cela je vais rouvrir un post je pense.

Ensuite, il me faut créer une fiche individuelle qui résume les dernières date et thème sur une feuille, et la !! j'aurai besoin de vos compétences.

Dan

Merci pour tes conseils également car toutes ces améliorations démarre de toi, en me précisant que c'étais les formules en colonne B qui posait problème.

Tu sais !! en tant qu'amateur je suis preneur de toutes solutions, donc si tu en a, tu peux y aller .

Je poursuis quelques essais supplémentaire avant de clôturer.

Merci à vous, à bientôt

Cdlt.

Bonjour

De retour !!

après multiples essais avec la proposition de MFerrand, je confirme que cela fonctionne bien. Je tiens encore à remercier MFerrand, et les autres pour l'aide que vous apportez.

Si je peux me permettre, une dernière question pour ce post svp.

Comme vous avez vu dans chaque feuille j'ai inséré un tableau, dans les colonnes avec les dates quand j'ajoute une ligne à l'aide de l'UF avec la liste des personnes, dans les colonnes ou j'ai beau paramétrer, même supprimer et remettre la colonne, il y a toujours la date qui s'inscrit à l'anglaise.

Comment pourrai-je remédier à ça ? svp

Je ne pensais pas que ce style de tableau était aussi compliqué . Je voulais aller au plus simple et au plus vite afin d'utiliser ce fichier rapidement, ben c'est raté; .

Merci d'avance

Cdlt

Bonjour,

Ce sont tes instuctions d'affectation à partir du Userform qu'il faut voir.

Si la date est dans un TextBox, parfois en précisant TextBox.Value lors de l'affectation ça suffit, mais pas toujours.

Avec la conversion par CDate(....) en principe ça devrait marcher.

Au cas où : conversion par CLng(....).

Sinon faudra prendre d'autres mesures !

Courage.

Re

Quelle rapidité !! c'est toi que l'on appel Lucky Luke .

Pour être un peu plus précis, dans mon UF, il n'y a pas d'objets mise à part une liste déroulante avec les nom prénom et un bouton validé.

ce qui me sert à incrémenter le tableau en ajoutant le nom et prénom et le reste est rempli manuellement, dont les dates.

Donc, je pense que ta dernière phrase

Sinon faudra prendre d'autres mesures !

m'inquiète un peu.

Si tu veux le fichier en PJ pour te rendre compte et voir les aménagements que j'ai fais, dis le, je ferai parvenir.

Merci pour le courage et tout le reste.

Cdlt

Pas trop le temps aujourd'hui ni demain [repas enfants+les leurs] : je m'apprête à partir faire les courses nécessaires et demain aux fourneaux ! Mais tu as une inversion mois-jour format américain lorsqu'une date est fournie à VBA sous forme de texte que ce dernier interprète comme date (en inversant chaque fois qu'il le peut !) avant de la renvoyer à Excel.

C'est sur ce point qu'il faut voir où VBA prend la date pour la renvoyer à Excel, et si on ne peut régler le problème lors de ce renvoi, il ne reste plus qu'à intervenir en amont pour définir la date dans VBA en tant que date, ce qui éliminera ce problème : il y a quantité de moyens et on trouve toujours une solution. Pas de souci...

Cordialement

Pas de soucis, la famille passe avant, normal.

Alors la !! date américaine, anglaise, ect.. ou va t'on.. . ça commence à être très technique pour moi, je vais quand même essayer de regarder à cela demain au taf.

Plus je te lit et plus j'ai l'impression de repartir au début du projet (humour bien sur) ,

si on ne peut régler le problème lors de ce renvoi, il ne reste plus qu'à intervenir en amont

en même temps tu rassures en citant

on trouve toujours une solution. Pas de souci...

Je te laisse dans tes préparations et bon repas en famille.

@ bientôt

Cdlt.

Bon !! j'ai essayer et essayer encore toujours le même résultat (problème de date à l'américaine), j'ai supprimé et refais les tableaux , supprimé et remis les colonnes des dates, rien y fais.

Alors, la situation me dépasse, je crains de devoir supprimer les tableau et en remettre des simple fais par vba. se qui m'obloge à faire des UF à chaque feuille.

Je ne décourage pas, je continue de chercher.

Cdlt.

Bonjour,

En regardant ton fichier, je n'ai vu d'affectation de date que pour l'onglet Coordonnées : TextBox3 et 4.

En essayant, je n'ai pas noté d'inversion mois-jour mais affectation de texte et non de date.

A affecter en utilisant CDate : =CDate(Me.TextBox3)

ce qui devrait rétablir la situation.

Cordialement

Bonjour MFerrand

Ton W.E a bien été?

Merci de l'aide que tu apportes afin de résoudre mon souci mais malheureusement après avoir modifié les textbox en CDate comme tu conseils, ben toujours la même chose.

Vraiment désolé, mais Moi je n'y comprends plus rien.

Je te joint mon fichier t'elle qui ai avec quelques explications sur feuilles "Coordonnées" et "Formation" en exemple mais le reste des autres feuilles font la même chose.

Grand merci encore de ton soutien.

Cdlt

Supprime le format personnalisé m/j/aaaa de tes formats de cellules personnalisés.

Ça semble revenir à la normale après.

Bonne soirée

Bonjour MFerrand

Je regarde et vais essayer tes conseils puis reviens te dire ce qu'il en ai.

Merci encore

@plus tard

Cdlt

Bonjour MFerrand

Comme promis, je reviens donner des news, après multiples essais et aménagement sur 2 ou 3 points de présentation tout à l'air d'être rentré dans l'ordre.

j'espère ne pas me tromper et vais pouvoir fermer ce post après comme il ce doit te remercier avec un GRAND Merci pour l'aide et les conseils, bien sur je n'oublie pas tous les autres qui on participé aussi.

Je vais revenir vite car il me reste 2 feuilles à créer du vba mais c'est sur je ne pourrai pas faire tout seul, votre aide me sera indispensable.

Merci pour tout

Je te souhaite bonne continuation

@ bientôt

Cdlt

Rechercher des sujets similaires à "macro feuille"