Vérification du contenu à l'ouverture de fichier EXCEL

Fanfan - 28 janv. 2022 à 08:34
Fanfandu17 Messages postés 15 Date d'inscription samedi 5 mars 2016 Statut Membre Dernière intervention 5 octobre 2022 - 29 janv. 2022 à 01:55
Bonjour,

Je cherche à déclencher un code à l'ouverture d'un fichier EXCEL afin de vérifier son contenu et exécuter un code si les conditions de vérifications sont OK ( comme par exemple enregistrer directement le fichier à un certain endroit)

Attention, le fichier que je teste ne peut pas contenir de code, il est généré par une appli pro et ouvert via un lien internet. This WorkBook_Open() ne peut donc pas être réalisé car le fichier ne contient pas le code

J'ai déjà fait un test sur le PERSONAL.XLSB, avec un Msgbox "TEST", mais la boite s'affiche à l'ouverture d'EXCEL, donc avant même que le fichier en question ne s'ouvre.

En détail:
Je vais sur un site internet de ma boite.
Je vais générer un fichier
Je clique sur un lien pour ouvrir ce fichier
Lorsque ce fichier s'ouvre, je veux tester la cellule A1 pour ce qu'il contient
Si il contient ce que je cherche je l'enregistre à tel endroit



Il faudrait donc que le code se déclenche à chaque ouverture d'un fichier EXCEL.

Je sèche, donc un petit coup de main svp?

EXCEL 365

Belle journée

2 réponses

dysorthographie Messages postés 64 Date d'inscription jeudi 27 janvier 2022 Statut Membre Dernière intervention 11 mars 2023 4
Modifié le 29 janv. 2022 à 00:03
Bonjour,
ta réponse est là!

https://www.developpez.net/forums/blogs/346483-philippe-tulliez/b9953/vba-excel-macros-complementaires-procedures-evenementielles/

dans ThisWorkbook du fichier XLAM
Option Explicit
Private WithEvents appXls As Excel.Application
Private Wbs As New Collection
Private Sub Workbook_Open()
  Set appXls = Excel.Application
End Sub

Private Sub appXls_WorkbookOpen(ByVal Wb As Workbook)
MsgBox Wb.Name
On Error Resume Next
Wbs.Add New WorkOpen, Wb.Name
Set Wbs(Wb.Name).WBpXls = Wb
Set Wbs(Wb.Name).Parent = Wbs
On Error GoTo 0
MsgBox Wb.Sheets(2).Range("A5")
End Sub


dans un module de classe que j'ai appelé WorkOpen
Public WithEvents WBpXls As Workbook
Public Parent As Collection
Private Sub Class_Terminate()
Set WBpXls = Nothing
Set Parent = Nothing
End Sub
Private Sub WBpXls_BeforeClose(Cancel As Boolean)
Parent.Remove WBpXls.Name
End Sub
 
1
Fanfandu17 Messages postés 15 Date d'inscription samedi 5 mars 2016 Statut Membre Dernière intervention 5 octobre 2022 1
29 janv. 2022 à 00:53
Alors là BRAVO et MERCI.

C'est exactement ce dont j'avais besoin.... Super Génial Génial Génial !!!
1
Fanfandu17 Messages postés 15 Date d'inscription samedi 5 mars 2016 Statut Membre Dernière intervention 5 octobre 2022 1 > Fanfandu17 Messages postés 15 Date d'inscription samedi 5 mars 2016 Statut Membre Dernière intervention 5 octobre 2022
29 janv. 2022 à 01:55
Sujet Clos et Résolu

Merci à tous
0
cs_Le Pivert Messages postés 7886 Date d'inscription jeudi 13 septembre 2007 Statut Contributeur Dernière intervention 1 avril 2023 137
28 janv. 2022 à 09:07
0
Fanfandu17 Messages postés 15 Date d'inscription samedi 5 mars 2016 Statut Membre Dernière intervention 5 octobre 2022 1
28 janv. 2022 à 12:12
Merci beaucoup pour votre intérêt, néanmoins, n'étant pas expert, je n'ai pas tout saisi, mais j'ai compris que le lien portait sur le traitement de fichier EXCEL non ouvert, et çà, je pense que je saurais faire (peut-être différemment).

Hors dans mon cas, le fichier à analyser n'est pas enregistrer qq part, il s'ouvre automatiquement en cliquant sur un lien internet.

Belle journée à tous
0
cs_Le Pivert Messages postés 7886 Date d'inscription jeudi 13 septembre 2007 Statut Contributeur Dernière intervention 1 avril 2023 137 > Fanfandu17 Messages postés 15 Date d'inscription samedi 5 mars 2016 Statut Membre Dernière intervention 5 octobre 2022
28 janv. 2022 à 14:13
0
Fanfandu17 Messages postés 15 Date d'inscription samedi 5 mars 2016 Statut Membre Dernière intervention 5 octobre 2022 1 > cs_Le Pivert Messages postés 7886 Date d'inscription jeudi 13 septembre 2007 Statut Contributeur Dernière intervention 1 avril 2023
28 janv. 2022 à 16:56
Merci pour votre intérêt, mais je ne pense pas que ce soit çà.. le sujet du lien porte sur des classeurs déjà ouverts. Moi je cherche comment déclencher un code à l'ouverture d'un classeur (et ce classeur ne peut pas contenir le code à executer)...
0
cs_Le Pivert Messages postés 7886 Date d'inscription jeudi 13 septembre 2007 Statut Contributeur Dernière intervention 1 avril 2023 137 > Fanfandu17 Messages postés 15 Date d'inscription samedi 5 mars 2016 Statut Membre Dernière intervention 5 octobre 2022
28 janv. 2022 à 17:45
tu écris:
Je clique sur un lien pour ouvrir ce fichier
Lorsque ce fichier s'ouvre, je veux tester la cellule A1 pour ce qu'il contient


le fichier est bien ouvert!
Où est le problème?

Moi ce que je propose c'est de mettre dans un classeur ce code que tu lanceras à l'ouverture de ton classeur:

Faire Alt F11 pour accéder à l'éditeur.
Insérer un module et mettre ce code:

Sub SelectWB()
    Dim xWBName As String
    Dim xWb As Workbook
    Dim xSelect As String, xTitleId As String
    Dim i As Integer
    i = 1
    For Each xWb In Application.Workbooks
        Cells(i, 1) = xWb.Name
    i = i + 1
        xWBName = xWBName & xWb.Name & vbCrLf
    Next
    xTitleId = "Choix classeurs"
    xSelect = Application.InputBox("Entrez l'un des classeurs ci-dessous:" & vbCrLf & xWBName, xTitleId, Range("A2").Value, Type:=2)
 Application.Workbooks(xSelect).Activate
 MsgBox Sheets(1).Range("A1").Value
'mettre le code d'enregistrement si besoin
End Sub


@+
0
Fanfandu17 Messages postés 15 Date d'inscription samedi 5 mars 2016 Statut Membre Dernière intervention 5 octobre 2022 1 > cs_Le Pivert Messages postés 7886 Date d'inscription jeudi 13 septembre 2007 Statut Contributeur Dernière intervention 1 avril 2023
28 janv. 2022 à 22:36
Bonsoir.

Je viens de faire votre manip et je vous remercie pour ce code. Néamoins ce n'est pas ce que je recherche.

Je dois saisir un code afin qu'EXCEL lance l'execution dun code à l'ouverture de n'importe fichier EXCEL. Le code ne peut pas être dans un fichier ni s'executer avec ThisWorkBook_Open car je vueux tester tous les fichiers qui s'ouvre, peut importe la méthode d'ouverture et leur nombre.. il doit se lancer automatique via une détection ou un évenemnt d'ouverture d'un fichier EXCEL. Par conséquent, le code doit tester le fichier qui s'ouvre, voir si la condition est requise pour l"enregistrer automatriquement qqpart, et si la condition n'est pas requise , se stopper et laisser la main à l'utilisateur pour faire ce qu'il veut dans EXCEL en tulisation normale....

Donc un code dans un fichier EXCEL qui s'excutera lorsque le fichier contenant le code s'ouvrira ne convient pas.
Et un code dans le personnal.xlsb ne s'execute qu'à l'ouverture de l'application EXCEL ( et non pas à l'ouverture d'une fichier EXCEL)...

Je cherche et je ne trouve pas, si çà se trouve ce n'est pas possible...

En tout cas merci et bonne soirée..
0