Passage de "SheetActivate" à bouton d'execution

Y compris Power BI, Power Query et toute autre question en lien avec Excel
B
BaptGTLLR
Jeune membre
Jeune membre
Messages : 18
Inscrit le : 19 septembre 2019
Version d'Excel : 2016

Message par BaptGTLLR » 25 septembre 2019, 12:54

Bonjour à tous,
il y à quelques jours sur ce forum l'un de vous a réussi à résoudre un de mes problème.
Cependant après tentative de compréhension et de modification du code (afin de l'addapter et l'appliquer à un cas plus complexe) je me rends compte que les chose ne sont pas claires pour moi.

Je m'explique: le code proposé commence par "Private Sub Workbook_SheetActivate(ByVal Sh As Object)" il se lance donc (si j'ai bien compris) lors de l'activation d'une feuille.
Le problème est que si je modifie le code et fait une erreur le code ne marche pas (normal). Mais si je recorrige le code comme à l'origine il ne se lance plus: mes feuilles excel son figée..

J'aurai donc voulu pouvoir transformer ce code "Private Sub Workbook_SheetActivate(ByVal Sh As Object)" en "Sub xxx ()" afin de pouvoir associer cette macro à un bouton et donc pouvoir le relancer à ma guise.

Etant totalement novice en VBA peut etre que ma requête peu paraître absurde. Je suis preneur de toutes remarques...

Je vous joins le fichier dont je parle:
essai VBA3.xlsm
(29 Kio) Téléchargé 5 fois
En vous remerciant!

Baptiste
Avatar du membre
Steelson
Fanatique d'Excel
Fanatique d'Excel
Messages : 14'984
Appréciations reçues : 882
Inscrit le : 13 octobre 2014
Version d'Excel : 2013 FR
Téléchargements : Mes applications

Message par Steelson » 25 septembre 2019, 13:11

Bonjour,

D'abord tu n'as pas pris le bon code car tu ne m'as pas suivi !! non, je déconne ... ah tiens, je pensais y avoir répondu mais je ne trouve plus le cas.

Ensuite, si ton code se bloque suite à une erreur, réactive la détection des événements, à défaut d'avoir inclus une gestion des erreurs dans le code.
Sub reactiver()
        Application.EnableEvents = True
        Application.ScreenUpdating = True
End Sub
Modifié en dernier par Steelson le 25 septembre 2019, 13:13, modifié 1 fois.

O.o°• ♪♪♫ °º¤ø,¸¸,ø¤º°`°º¤ø,¸ O.o°• ♪♪♫ °º¤ø,¸¸,ø¤º°`°º¤ø,¸
PI = 3.14159 26535 89793 23846 26433 83279 50288 41971 69399 37510 58209 74944 59230 78164 06286 20899 86280

( ͡• ͜ʖ ͡• )
Avatar du membre
Dan
Modérateur
Modérateur
Messages : 6'375
Appréciations reçues : 112
Inscrit le : 27 avril 2007
Version d'Excel : Office 365, Mac 2011

Message par Dan » 25 septembre 2019, 13:12

Bonjour

Il faudra mettre un bouton sur chaque feuille dans ce cas pour exécuter le code ou prévoir un raccourci clavier par exemple
Votre fichier en retour dans lequel vous devez utiliser les touches CTRL + e pour exécuter le code
essai VBA4.xlsm
(28.75 Kio) Téléchargé 2 fois

Cordialement
@+ Dan ;)
B
BaptGTLLR
Jeune membre
Jeune membre
Messages : 18
Inscrit le : 19 septembre 2019
Version d'Excel : 2016

Message par BaptGTLLR » 26 septembre 2019, 10:08

Bonjour à vous et merci beaucoup!
Une fois de plus, je pensais avoir compris! :D mais finalement il semblerai que non... :(
J'avais légèrement modifier le code afin d'ajouter un paramétré de tri supplémentaire en fonction de l'année ce qui fonctionnais super bien sur le fichier de base!
En essayant de l'appliquer sur le fichier final (bien plus gros) un bug apparaît et je n'arrive pas a comprendre pourquoi! De plus, appliqué à ce nouveau tableau le code ne "rajoute" plus des lignes dans les tableaux cible (afin d'avoir le total toujours en bas) mais recouvre le total lorsque nous ajoutons des données! message "les cellules actuelles comportent des donnée, voulez vous les remplacer"
Un autre problème que je rencontre est le fait que lorsque la macro plante, mon tableau saisie (onglet "courrier") se masque complètement (ou partiellement) et je ne peu plus le consulter...

Si quelqu'un pense avoir des explications je suis preneur :lol:

Un des bugs semble apparaitre lorsque le tri ne recense pas de valeurs.

Je ne peut malheureusement pas joindre le fichier final (trop lourd)...
Je joins par contre le fichier test léger (illustration du problème lorsqu'il n'y à pas de valeur en indiquant 2020 dans l'onglet "G21")
Sur ce fichier test le probleme de "cellules comportant des donnée" n'apparrait pas...
essai VBA ok.xlsm
(27.5 Kio) Pas encore téléchargé
Encore une fois merci à vous, j'essai d’alléger le fichier final pour pouvoir le poster!
B
BaptGTLLR
Jeune membre
Jeune membre
Messages : 18
Inscrit le : 19 septembre 2019
Version d'Excel : 2016

Message par BaptGTLLR » 26 septembre 2019, 10:19

Me revoila avec le tableau allégé!
Test tableau complet allégé.xlsm
(261.43 Kio) Téléchargé 7 fois
Ici on peu constater toutes les sortes de bugg ^^
Avatar du membre
Steelson
Fanatique d'Excel
Fanatique d'Excel
Messages : 14'984
Appréciations reçues : 882
Inscrit le : 13 octobre 2014
Version d'Excel : 2013 FR
Téléchargements : Mes applications

Message par Steelson » 26 septembre 2019, 11:26

Bonjour,

j'ai ajouté ceci
On Error GoTo sortie
et
sortie:
        Application.EnableEvents = True
        Application.ScreenUpdating = True
et d'autres bricoles qui plantaient comme T et [saisie]

et je pense qu'il serait préférable de le réactiver
Private Sub Workbook_SheetActivate(ByVal Sh As Object)
Test tableau complet allégé.xlsm
(252.83 Kio) Téléchargé 2 fois

O.o°• ♪♪♫ °º¤ø,¸¸,ø¤º°`°º¤ø,¸ O.o°• ♪♪♫ °º¤ø,¸¸,ø¤º°`°º¤ø,¸
PI = 3.14159 26535 89793 23846 26433 83279 50288 41971 69399 37510 58209 74944 59230 78164 06286 20899 86280

( ͡• ͜ʖ ͡• )
B
BaptGTLLR
Jeune membre
Jeune membre
Messages : 18
Inscrit le : 19 septembre 2019
Version d'Excel : 2016

Message par BaptGTLLR » 26 septembre 2019, 11:50

Merci beaucoup,
J'ai également corrigé quelques détails (certaines cellules fusionnées dans certaines feuilles, les nom de feuilles qui ne correspondent pas).
Par contre ce problème de données qui se copient en dehors du tableau persiste... Les tableaux (T) ne s'adaptent pas à la quantité de données issues du tri de (saisie).. (exemple Revoul) Je ne comprend pas car cela marchait très bien dans le test simplifié... :|
Test tableau complet allégé 2.xlsm
(255.63 Kio) Téléchargé 3 fois
En tout cas merci de votre aide! Je reste preneur si vous savez solutionner ce problème de tableau!
Avatar du membre
Steelson
Fanatique d'Excel
Fanatique d'Excel
Messages : 14'984
Appréciations reçues : 882
Inscrit le : 13 octobre 2014
Version d'Excel : 2013 FR
Téléchargements : Mes applications

Message par Steelson » 26 septembre 2019, 12:46

BaptGTLLR a écrit :
26 septembre 2019, 11:50
Par contre ce problème de données qui se copient en dehors du tableau persiste... Les tableaux (T) ne s'adaptent pas à la quantité de données issues du tri de (saisie).. (exemple Revoul)
cela fonctionne très bien !
Capture d’écran (102).png
dans l'onglet de recopie, quelle est l'importance d'avoir un tableau (même si j'apprécie beaucoup de travailler avec eux, mais j'ai un soucis quand j'emploi le filtre avancé)
BaptGTLLR a écrit :
26 septembre 2019, 11:50
En tout cas merci de votre aide! Je reste preneur si vous savez solutionner ce problème de tableau!
je sais résoudre mais avec une macro qui ne fait pas 60 lignes, mais 5 fois mois ... avec un filtre avancé programmé.

O.o°• ♪♪♫ °º¤ø,¸¸,ø¤º°`°º¤ø,¸ O.o°• ♪♪♫ °º¤ø,¸¸,ø¤º°`°º¤ø,¸
PI = 3.14159 26535 89793 23846 26433 83279 50288 41971 69399 37510 58209 74944 59230 78164 06286 20899 86280

( ͡• ͜ʖ ͡• )
B
BaptGTLLR
Jeune membre
Jeune membre
Messages : 18
Inscrit le : 19 septembre 2019
Version d'Excel : 2016

Message par BaptGTLLR » 1 octobre 2019, 17:57

Bonjour à tous,
Désolé pour la réponse tardive! mon emploi du temps ne m'a plus permis de me pencher sur le problème!
Mais me revoila avec tout un tas de soucis! ::(
Le problème de données qui se copient en dehors du tableau persiste... Les tableaux (T) ne s'adaptent pas à la quantité de données issues du tri de (saisie).. Par exemple , essayez d'ajouter un ligne "revoul" (bien penser à mettre une date en 2019) au tableau saisie. Lorsque que l'on active la macro sur la feuille Revoul, la nouvelle valeur se copie en dehors du tableau (sur la ligne de total la première fois, puis sur les lignes suivantes après avec le message "cette cellule contient des données. Voulez vous les remplacer?".

Mon intérêt d'avoir un tableau sur les feuilles copies est de pouvoir éventuellement faire un tri particulier par la suite (par entreprise par exemple). Je ne veux pas ajouter ce tri à la macro car il doit pouvoir etre fait au cas par cas sur les feuilles par la personne qui va utiliser le tableau (pour trouver le devis d'une entreprise sur un établissement par exemple).

La feuille saisie correspond à notre feuille de données brutes. Les feuilles "établissement/date" correspondent à nos sorties que nous imprimons et sur lesquelles la mise en page est importante (afficher les totaux par exemple en bas du tableau, ce que la macro est sensée faire...).

Pour résumer: problème de données qui se copient dans sur la feuille "en vrac" et non dans le tableau cible.

Je reste à votre disposition pour tous renseignements complémentaires (avec plus de réactivité cette fois)!

Merci!! :)
Avatar du membre
Steelson
Fanatique d'Excel
Fanatique d'Excel
Messages : 14'984
Appréciations reçues : 882
Inscrit le : 13 octobre 2014
Version d'Excel : 2013 FR
Téléchargements : Mes applications

Message par Steelson » 2 octobre 2019, 00:41

Bonjour,

Pour avancer, j'ai juste un problème de correspondance entre les en-têtes des feuilles copie et de la feuille saisie.
N° BDC >> ?
Date envoie facture >> ?
Avencement >> en mettant Avancement, cela colle !
BaptGTLLR a écrit :
1 octobre 2019, 17:57
Pour résumer: problème de données qui se copient dans sur la feuille "en vrac" et non dans le tableau cible.
Il est tout à fait possible de faire un filtre avancé et copier dans un tableau ajusté à la réponse (ce qui contredit ma réponse précédente). La macro se réduit à quelques lignes
Private Sub Workbook_SheetActivate(ByVal Sh As Object)
    If Sh.Name = "Courrier" Or Sh.Name = "Listes" Or Left(Sh.Name, 5) = "Feuil" Then Exit Sub

    ' filtre avancé
    Sheets("Courrier").ListObjects(1).Range.AdvancedFilter Action:=xlFilterCopy, _
        CriteriaRange:=Sh.Range("M1").CurrentRegion, CopyToRange:=Sh.Range("A4").CurrentRegion.Resize(1), Unique:=False
    
    ' redimensionnement du tableau
    On Error Resume Next ' si pas de réponse
    Sh.ListObjects(1).Resize Sh.Range("A4").CurrentRegion ' réponse en tableau
End Sub
Il me reste juste à y mettre les totaux si cette version convient ! mais là j'ai un autre problème ... sur quelle zone ? dans le dernier fichier il semble y avoir des valeurs sous une date et là je suis perdu ! Le filtre avancé fonctionne parfaitement à condition que les en-têtes de colonnes correspondent pile-poil.
Test tableau complet allégé.xlsm
(218.89 Kio) Téléchargé 2 fois

O.o°• ♪♪♫ °º¤ø,¸¸,ø¤º°`°º¤ø,¸ O.o°• ♪♪♫ °º¤ø,¸¸,ø¤º°`°º¤ø,¸
PI = 3.14159 26535 89793 23846 26433 83279 50288 41971 69399 37510 58209 74944 59230 78164 06286 20899 86280

( ͡• ͜ʖ ͡• )
Répondre
  • Sujets similaires
    Réponses
    Vues
    Dernier message