XL 2016 Worksheet_Change(ByVal Target As range)

zayab

XLDnaute Junior
Bonjour Ô forumtoiquisaittout,

A ma plus grande surprise :) j'ai bricolé du code qui en plus fonctionne. :cool:

Le code est dans un module de class (si j'ai bien tout compris) dans la Feuille("Tableau") . Dans cette feuille à chaque fois que la valeur en A2:d2,E2:G2 change, le (calcul?) listeact s'active grâce à ça:
Option Explicit
ListeAct
End

Private Sub Worksheet_Change(ByVal Target As Range)
If Not Intersect(Me.[A2:d2,E2:G2], Target) Is Nothing Then
listeact
End Sub

Sub ListeAct()
Dim DébP As Date, FinP As Date, TE(), LE As Long,

etc...
Mais je dois modifier j'ai besoin de masquer la feuille le temps du calcul pour éviter de bouffer les ressources du PC avec l'affichage avec un petit : Sheets("Tableau").Visible = False

J'aimerai lancer ce (calcul?) maintenant avec un bouton dans un module (standard?)
J'aimerai tant que ce soit clair... (à vrai dire c'est le petit Me qui me fait des miseres, je crois.)

Est ce possible? Pouvez vous m'aider svp?:D
Un grand Merci d'avance
 

vgendron

XLDnaute Barbatruc
Hello
il y a surement plusieurs possibilités pour ne pas afficher la feuille.. du moins les modifs effectuées par ta macro "ListeAct"
avec un application.screenupdating=false

peut etre que dans ta macro tu as des ....select.. . activate.. etc .. (mais difficile de dire sans voir la macro)

pour lancer la macro avec un bouton.. suffit de créer un bouton de formulaire sur la feuille, et lui affecter la macro "ListeAct"

Bref, beaucoup de possibilités, mais pour t'aider plus, il faudrait que tu postes ton fichier exemple..
 

zayab

XLDnaute Junior
Bonjour, super rapide vgendron,
oui il y a des activate, select etc
si j'active la macro "Listeact" comme tu le proposes j'ai une erreur de compilation: utilisation incorrect du mot cle Me
car avant il y a la ligne
If Not Intersect(Me.[A2:d2,E2:G2], Target) Is Nothing Then ListeAct
et si j'ai bien saisi, Me est defini dans les proprietes de :

Worksheet_Change(ByVal Target As Range)
c'est je crois les propriétés de cette dernière que je doit adapter à un module standard

Le reste de listeact est:
Sub ListeAct()
Dim DébP As Date, FinP As Date, TE(), LE As Long, _
DébT As Date, FinT As Date, TS(), LS As Long
DébP = Me.[B2].Value + Me.[G2].Value
FinP = Me.[J2].Value + Me.[K2].Value
TE = Feuil1.UsedRange.Value
ReDim TS(1 To UBound(TE, 1), 1 To 13)
For LE = 2 To UBound(TE, 1)
DébT = TE(LE, 7) + TE(LE, 8) ' Debut
FinT = TE(LE, 9) + TE(LE, 10) 'Fin
If DébT < FinP And FinT > DébP Then
LS = LS + 1
TS(LS, 1) = TE(LE, 1) 'Id
TS(LS, 2) = DébT: TS(LS, 3) = FinT 'Dates et heures
TS(LS, 4) = TE(LE, 13) 'N3
TS(LS, 5) = TE(LE, 14) 'N4
TS(LS, 6) = TE(LE, 3) 'Statut réalisation
TS(LS, 7) = TE(LE, 17) 'Moyen de contact chargé d'intervention
TS(LS, 8) = TE(LE, 6) 'STATUT
TS(LS, 9) = TE(LE, 19) 'Moyen de contact CP
TS(LS, 10) = TE(LE, 21) 'Entreprise extérieure
TS(LS, 11) = TE(LE, 22) 'Plan de prévention
TS(LS, 12) = TE(LE, 23) 'Description
TS(LS, 13) = TE(LE, 5) 'VIGILANCE
End If: Next LE
With Me.ListObjects("Table2")
If .ListRows.Count > LS Then .ListRows(LS + 1).Range.Resize(.ListRows.Count - LS).Delete xlShiftUp
If .ListRows.Count = 0 Then .ListRows.Add
.DataBodyRange.Resize(LS).Value = TS: End With

et de la mise en format...

End Sub

Et là le flou regne n'est ce pas?
 
Dernière édition:

zayab

XLDnaute Junior
Le Me nomme la plage qui servira de reference plus bas ici:
DébP = Me.[B2].Value + Me.[G2].Value
FinP = Me.[J2].Value + Me.[K2].Value

J'etais long pour lisser les données ci joint le fichier excel qui contient la macro (fichier pour forum exceldownload) et celui des données à coller dedans avant de lancer la macro par ctrl+shift+q
Merci encore pour votre temps
 

herve62

XLDnaute Barbatruc
Supporter XLD
Bonjour
J'ai vite fait jeté un oeil , je viens de terminer un fichier avec Sub change donc juste un avis : (Vgendron a raison Me inutile c'est plutot pour USf)
tu nommes ta plage
Code:
If Not Intersect(Cible, Range("PlageAbs")) Is Nothing Then
Application.ScreenUpdating = False
Application.EnableEvents= False                   ' Evite de boucler si des résultats se mettent dans la feuille
code
Application.ScreenUpdating = true
Application.EnableEvents= true
 

vgendron

XLDnaute Barbatruc
Hello
il y a quelques problèmes dès le départ...
Dans le fichier pour forum excel - Feuille Import
le mode d'emploi: copier les données de l'exportation.. lesquelles? ou ca? celles du fichier Données?

importer dans "Night".. c'est quoi Night? la feuille "Import" du fichier forum excel?

bon. admettons que ma boule de cristal ne soit pas trop floue, j'ai copié collé les data de la feuille Données vers la feuille Import
quand j'active la feuille "tableau", le code se lance.. et bug dès la ligne "DébT = TE(LE, 7) + TE(LE, 8)

qu'est censé faire le code "ListeAct" ?
 
Dernière édition:

vgendron

XLDnaute Barbatruc
Voir PJ
tout se passe dans le module 1

1) à l'ouverture du classeur, j'ai désactiver le clear de la feuille "Import" pour ne pas avoir à le refaire à chaque fois que je testais
2) donc.. admettons que tu viennes d'importer les data; les dates de debut et fin (colonne H et I) ne sont pas dans un format date
3) tu actives la feulle "Tableau"
4) le code ListeAct se lance
5) celui ci commence par appeler la macro "FormaterDate" pour mettre les colonnes H et I dans le format Date requis pour la suite
6) puis ca déroule... voir les commentaires
 

Pièces jointes

  • fichier pour forum exceldownload.xlsm
    70.1 KB · Affichages: 29

zayab

XLDnaute Junior
Bonjour vgendron,
j'ai taché d'appliquer les conseils d'herve62 (merci :))..en vain mais un malencontreux accident m'a mené à l'hosto. Merci de t’être penché sur les fichiers je regarde tes commentaires et te répond pour clarifier mes fichiers au besoin.
 

zayab

XLDnaute Junior
Big Big Big Merci
Il parait qu'on a 1 mois pour le dire...
non? c'est pas pour ça?
Désolé de ne pas avoir répondu plus tôt d'autant que'avec Hervé62 et vgendron vous êtes au top de la réactivité.
J'essaye de rattraper mes lacunes en vba avec des tuto youtube et vos conseils. Et j’avoue c'est un nouveau
départ pour un bricolo.
Merci pour avoir cltarifié et nettoyé le code (c’etait pas du luxe)
Le projet a pris une autre forme, mais je crois que je repasserai dire coucou très bientôt
long vie à excel-download
 

Discussions similaires