Excel VBA - Event Open_Worbook

Bonjour, Comment fait-on pour vérifier si le fichier ouvert à un texte dans une cellule ? afin de différencier les fichiers ouverts pour exécuter la bonne macro ! Car j'ai déjà tout essayé en faisant un Open_workbook dans mon Personal, mais lorsque que j'ouvre un document j'ai un problème avec l'objet RANGE. Je vous remercie d'avance ! :) Exemple de code : Thisworkbook.activate Sheets(1).activate If Sheets(1).range("A1").value = "OaVE" Msgbox("C'est le fichier Oave") Else Msgbox("Ce n'est pas le fichier Oave") End if End sub

Bonjour

Quand un fichier s'ouvre, il devient le fichier actif donc ActiveWorkbook.Name et donne son nom

Bonjour, Merci de votre réponse rapide, cependant si je ne connais pas le nom du fichier (extraction, le nom change tout le temps) ?

RE

Ce que j'explique c'est que la ligne de VBA indiquée te donne son nom :

FOuvert=ActiveWorkbook.Name

Désolé, je suis un peu novice, car j'apprends en autodidacte.. J'ai l'erreur suivante "Utilisation incorrecte de la propriété" Code : Private Sub Workbook_Open() ActiveWorkbook.Name If Sheets(1).Range("A1").Value = "Numéro de commande" Then MsgBox ("C'est le fichier Oave") Else MsgBox ("Ce n'est pas le fichier Oave") End If End Sub

Bonjour Vincent_SL7

Je vous invite à lire la charte du forum [A LIRE AVANT DE POSTER]
qui vous aidera dans vos demandes et réponses sur ce forum et notamment :

  • Joignez (si possible) un fichier pour augmenter vos chances d'obtenir de l'aide en cliquant sur le bouton Fichier de l'éditeur. Si votre fichier est trop lourd ou contient des données personnelles, créez une version allégée de votre fichier avec juste assez d'informations pour permettre de comprendre votre problème. Dans tous les cas, ne postez JAMAIS de fichiers avec des informations personnelles ou confidentielles (cet utilitaire peut vous aider à les retirer).
  • Pour plus de lisibilité, utilisez la fonctionnalité <-> pour insérer vos codes VBA (et si possible aussi pour vos formules Excel).
image

Faite simplement un copier/coller du code que vous avez

A+

Bonjour, J'avais bien lu cette charte, et je suis bien sur google chrome, cependant je n'ai pas assez à ces outils voir screenshot ci-dessous :
Je n'arrive pas à comprendre, j'ai des layouts différents sur ce site alors que je ne change pas de navigateur, actuellement j'ai un layout très simple avec que du texte, comme si on était dans du code... je ne peux, même pas insérer de fichier joint..

En changeant de PC j'ai enfin le bon layout du site !

Voici donc le code :

Private Sub Workbook_Open() 

ActiveWorkbook.Name

 If Sheets(1).Range("A1").Value = "Numéro de commande" Then 

MsgBox ("C'est le fichier Oave") 

Else MsgBox 

("Ce n'est pas le fichier Oave")

 End If 

End Sub

J'ai toujours une erreur, comme si avec Workbook_open le fichier n'était pas encore réellement ouvert !

Re,

Il faut que ce code soit mis dans ThisWorkbook, on est bien d'accord !?

Ensuite, je ferais plutôt

Private Sub Workbook_Open() 
 If ActiveWorkbook.Sheets(1).Range("A1").Value = "Numéro de commande" Then 
MsgBox "C'est le fichier Oave"
Else MsgBox 
  MsgBox  '"Ce n'est pas le fichier Oave"
 End If 
End Sub

A+

Re,

malheureusement, ça ne fonctionne toujours pas :(

voir screen ci-joint

image

En tout cas ça fonctionne après coup, mais pas à l'ouverture.

Je crois qu'à l'ouverture le workbook n'est pas encore ouvert...

Re,

Je ne sais pas ou vous mettez le code mais effectivement on voit bien sur la capture d'écran que le classeur n'est pas ouvert

A+

RE à tous

Tu parlais d'un Workbook_open dans Personnal

Tu peux écrire dans le module Workbook de personnal

Dim WithEvents App As Excel.Application

Private Sub Workbook_Open()

Set App = Excel.Application

End Sub

Private Sub App_WorkbookOpen(ByVal Wb As Workbook)

'Intercepte l'ouverture de tout classeur

if Wb.Name<>"PERSONAL.XLSB" then MsgBox Wb.Name

End Sub

Oui je suis sensé le mettre dans le ThisWorkbook du Personal car je veux faire des conditions à l'ouverture de certain fichiers. La solution de 78chris est bien partie, cependant je n'arrive pas à mettre le code ci-dessous :

Private Sub App_WorkbookOpen(ByVal Wb As Workbook)

'Intercepte l'ouverture de tout classeur

If Wb.Name <> "PERSONAL.XLSB" Then MsgBox Wb.Name

If ActiveWorkbook.Sheets(1).Range("A1").Value = "Numéro de commande" Then

MsgBox "C'est le fichier Oave"

Else
  MsgBox  '"Ce n'est pas le fichier Oave"
 End If
 End If
End Sub

Comment je fais pour enchaîner avec le code IF pour vérifier la feuille du fichier ouvert ?

D'avance merci !

J'ai essayé avec le code suivant, je n'ai pas d'erreur cependant il me renvoit la condition "Else" alors que le 1 est bien écrit en A1 des idées ?

Dim WithEvents App As Excel.Application

Private Sub Workbook_Open()

Set App = Excel.Application

End Sub

Private Sub App_WorkbookOpen(ByVal Wb As Workbook)

'Intercepte l'ouverture de tout classeur

If Wb.Name <> "PERSONAL.XLSB" Then

MsgBox Wb.Name

End If

If Sheets(1).Range("A1").Value = "1" Then

MsgBox ("Valeur trouvée")

Else

MsgBox ("No values")

End If

End Sub

RE

Je ne comprends pas : puisque ce code te donne le nom du classeur tu n'as plus besoin de vérifier dans une cellule une valeur pour confirmer.

Ou alors tu ne nous dis pas tout...

Re,

Je pense que je me suis mal expliqué. Pour faire simple, nous faisons plusieurs extraction Excel par jour et nous avons différentes macro pour chaque fichier Excel, mais nous perdons énormément de temps à déclencher les macros correspondantes, nous voulons donc qu'à chaque extraction la macro check la valeur de certaines cellules afin de déterminer quelles macros déclencher, avec quel enregistrement nommé etc.., ce qui nous permettrait de faciliter énormément notre travail..

Donc qui dit extraction, dit des noms de fichier et des noms de feuilles variables :(

RE

Je pense que je me suis mal expliqué.

En effet...

Je trouve cette démarche tordue : ouvrir le fichier pour en déterminer la typologie.
Cela devrait se régler par un préfixe ou suffixe de nommage des extractions ou de répartition de celles-ci dans des dossiers différents selon le type.

Au passage ne pas confondre 1 et "1"

Oui je sais que c’est tordu, mais notre système et très mal fait, donc il est très dépendant d’excel… penses-tu que ma demande est impossible?

Rechercher des sujets similaires à "vba event open worbook"