Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

faire action quand ouverture d'un fichier

  • Initiateur de la discussion Initiateur de la discussion glm
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

glm

XLDnaute Occasionnel
Bonsoir à tous,

je cherche à comparer une valeur dans une case c suivant une autre valeur qui se trouve dans une case c36.
exemple:
for c = 4 To 34
If Worksheets("feuil1").Cells(8,c) = Worksheets("feuil1").Range("C36") Then
Worksheets("feuil1").Cells(4,c)= "7"
End If
Next c
puis après j'aimerais répeter l'action sur d'autres feuilles
Merci de vos aides
A+
 
Re : faire action quand ouverture d'un fichier

Bonsoir,
tu veux connaître le code pour que la macro démarre à l'ouverture du fichier ou le code qui permet de répéter ton code sur les autres feuilles ou les 2?
 
Re : faire action quand ouverture d'un fichier

bonsoir à tous

sur toute les feuilles

dim ws as worsheets
for each ws in workbooks.sheets
for c = 4 To 34
If ws.Cells(8,c) = ws.Range("C36") Then ws.Cells(4,c)= "7"
Next c
next ws

Macro à mettre dans workbook_open de l'objet workbook
 
Re : faire action quand ouverture d'un fichier

Bonsoir wilfried_42,
merci pour la réponse.
je viens de la tester, il y a une erreur "données introuvable ou erreur de compilation"
j'ai mis le prog dans ThisWorkbook

Private Sub Workbook_Open()

Dim ws As Worksheets
For Each ws In Workbooks.Sheets
For c = 4 To 34
If ws.Cells(8, c) = ws.Range("C36") Then ws.Cells(4, c) = "7"
Next c
Next ws

End Sub
 
Re : faire action quand ouverture d'un fichier

Teste voir
Code:
Private Sub Workbook_Open()
Dim ws As Worksheet
For Each ws In ActiveWorkbook.Worksheets
For c = 4 To 34
If ws.Cells(8, c) = ws.Range("C36") Then ws.Cells(4, c) = "7"
Next c
Next ws
End Sub
Chez moi, ça ne bug pas. 😎
Les "s" sont un peu pénible, je sais!!! 😀
 
Re : faire action quand ouverture d'un fichier

bonsoir le fil
Une précision à vos réponses.

Dans la mesure où le code est dans le module ThisWorkbook, ceci suffit : For Each ws In Worksheets ,car le classeur sur lequel la macro va travailler sera forcément "thisWorkbook".

Personnellement je préfère ceci au ActiveWorkbook pour les phases de debugage, où je navigue entre différents classeurs ouverts et qu'il m'arrive d'oublier d'activer le bon! 🙄
Et de manière générale, je trouve plus clair et plus sûr de préciser si la macro doit travailler sur CE classeur ou sur le classeur ACTIF.

Bonne soirée
 
Re : faire action quand ouverture d'un fichier

Bonsoir à tous,
merci pour les réponses de luki et jnp, moi j'étais parti me coucher...!
Effectivement cela ne bug plus
mais cela ne fonctionne toujours pas?
j'envoie l'exemple. Le but est de comparer la date d'aujourd'hui avec la date d'une feuille de mois(ici octobre) et de mettre la valeur 7 dans la case au dessus du jour actuel
exemple: aujourd'hui, on est le 22(en C36)-->le 22 se trouve en Y8-->on devrait avoir la valeur 7 dans la case Y4(pour afficher une flèche avec une police spéciale)
Si quelqu'un a une idée...
A+
 

Pièces jointes

Re : faire action quand ouverture d'un fichier

Bonjour glm 🙂,
Quand la question est bien posée, c'est plus simple. Le mieux est de ne pas faire appel à ta cellule (qui n'est pas encore calculée lors de l'ouverture) mais d'appeler en VBA la fonction Now (aujourd'hui) et Day (jour), ce qui te donne le code suivant:
Code:
Private Sub Workbook_Open()
Dim ws As Worksheet
For Each ws In ActiveWorkbook.Worksheets
ws.Cells(4, Day(Now) + 3) = "7"
Next ws
End Sub
Je pense que ça devrait le faire 😎
 
Re : faire action quand ouverture d'un fichier

Bonjour le fil

Bien vu ton approche JNP! Je la garderais si j'étais glm.

Pour ton info glm : il faut comparer ce qui est comparable! et ne pas se fier à ce que tu vois dans tes cellules, surtout avec des dates 😛

Dans l'exemple ci dessous, qui fonctionne aussi, (au passage j'ai changé le numéro de ligne dans ta macro, car travailler sur une ligne vide... 🙄) j'ai utilisé le code "Debug.Print" qui permet d'évaluer exactement un bout de code (il faut ouvrir la fenêtre éxécution pour ça) c'est très utile en débuggage!

Ça m'a permis de voir que tu comparais 22 avec 22/10/2007..... et de corriger en ajoutant un "Day" bienvenu!

Code:
Private Sub Workbook_Open()

Dim ws As Worksheet, c As Integer
For Each ws In Worksheets
Debug.Print ws.Range("C36") ' pour évaluer la valeur renvoyée par le code
    For c = 4 To 34
    Debug.Print ws.Cells(8, c) ' pour évaluer la valeur renvoyée par le code
        If Day(ws.Cells(8, c)) = ws.Range("C36") Then ws.Cells(4, c) = "7"
    Next c
Next ws
End Sub

une fois ton pb résolu, tu peux passer le code "Debug.Print" en commentaire

Bonne soirée
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

  • Question Question
XL 2021 VBA excel
Réponses
4
Affichages
452
Réponses
3
Affichages
879
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…