XL 2013 [RESOLU] Problème avec Workbook_Open

BENAM69

XLDnaute Junior
Bonjour à tous,

Cela fait des heures et des heures que je cherche des solutions pour comprendre pourquoi il y a tant de problème sur l'exécution de ma macro quand je le mets en Sub Workbook_Open()

Quand je clique sur le bouton Mise à jour, il exécute parfaitement ma macro.
Par contre, quand je décide d'utiliser la fonction Workbook_Open, il met à jour les cellules mais pas tout. J'ai des cellules qui doivent apparaître et qu'il ne sont pas !!!!!!

Savez-vous pourquoi ? Pourtant j'ai copié collé exactement ma macro !!! Il ne devrait pas à avoir d'erreur !!!

C'est surtout quand je lance ma macro à travers les commandes sur ATL+F11 que tout déconne !!

SVP un coup de main !!!!!

Bien a vous
 

Oranger

XLDnaute Occasionnel
Bonjour benam69,

Est-ce que tu peux joindre ton fichier avec des données factices pour que l'on regarde d'où vient le problème stp?


Oranger
 

BENAM69

XLDnaute Junior
Bonjour benam69,

Est-ce que tu peux joindre ton fichier avec des données factices pour que l'on regarde d'où vient le problème stp?


Oranger
Voici le Fichier avec des informations factices.

Le nom de ma programmation s'appelle CopierColler.
C'est l'onglet SUIVI DE FORMATION qui déconne.

Merci pour ton aide.
 

Fichiers joints

Roland_M

XLDnaute Barbatruc
Bonsoir,

'ici au début du Sub tu as ceci:
Dim lastLine As Long
lastLine = ActiveWorkbook.Sheets("SUIVI DE FORMATION").Range("A3").End(xlUp).Row + 1
ActiveWorkbook.Sheets("SUIVI DE FORMATION").Range("A3:G100").ClearContents

'voir plutôt comme ceci: (il faut activer la feuille !!!)
Dim lastLine As Long
Sheets("SUIVI DE FORMATION").Activate
lastLine = ActiveSheet.Range("A3").End(xlUp).Row + 1
ActiveSheet.Range("A3:G100").ClearContents


EDIT: idem
'ici tu as ceci:
ActiveWorkbook.Sheets("SUIVI DE FORMATION").Range("A" & lastLine) = Cells(cell_TableauFonderie.Row, 3) 'PROGRAMME DE FORMATION
ActiveWorkbook.Sheets("SUIVI DE FORMATION").Range("B" & lastLine) = Cells(5, cell_TableauFonderie.Column + 1) 'OPERATEUR
ActiveWorkbook.Sheets("SUIVI DE FORMATION").Range("C" & lastLine) = Cells(5, 2) 'SECTEUR
ActiveWorkbook.Sheets("SUIVI DE FORMATION").Range("D" & lastLine) = Cells(cell_TableauFonderie.Row, 2) 'ACTIVITE
ActiveWorkbook.Sheets("SUIVI DE FORMATION").Range("E" & lastLine) = cell_TableauFonderie.Offset(0, 1) 'DATE DE FORMATION
ActiveWorkbook.Sheets("SUIVI DE FORMATION").Range("F" & lastLine) = cell_TableauFonderie.Offset(0, 1) + Cells(cell_TableauFonderie.Row, 26) 'DATE DE FORMATION + DUREE DE FORMATION
ActiveWorkbook.Sheets("SUIVI DE FORMATION").Range("G" & lastLine) = cell_TableauFonderie.Offset(0, 1) + Cells(cell_TableauFonderie.Row, 26) + Cells(cell_TableauFonderie.Row, 28) 'DATE DE FIN + TOURNUS

'voir plutôt comme ceci: (encore que la feuille concernée étant active, on peut se passer de With)
With ActiveSheet
.Range("A" & lastLine) = Cells(cell_TableauFonderie.Row, 3) 'PROGRAMME DE FORMATION
.Range("B" & lastLine) = Cells(5, cell_TableauFonderie.Column + 1) 'OPERATEUR
.Range("C" & lastLine) = Cells(5, 2) 'SECTEUR
.Range("D" & lastLine) = Cells(cell_TableauFonderie.Row, 2) 'ACTIVITE
.Range("E" & lastLine) = cell_TableauFonderie.Offset(0, 1) 'DATE DE FORMATION
.Range("F" & lastLine) = cell_TableauFonderie.Offset(0, 1) + Cells(cell_TableauFonderie.Row, 26) 'DATE DE FORMATION + DUREE DE FORMATION
.Range("G" & lastLine) = cell_TableauFonderie.Offset(0, 1) + Cells(cell_TableauFonderie.Row, 26) + Cells(cell_TableauFonderie.Row, 28) 'DATE DE FIN + TOURNUS
End With
 
Dernière édition:

BENAM69

XLDnaute Junior
Bonsoir,

'ici au début du Sub tu as ceci:
Dim lastLine As Long
lastLine = ActiveWorkbook.Sheets("SUIVI DE FORMATION").Range("A3").End(xlUp).Row + 1
ActiveWorkbook.Sheets("SUIVI DE FORMATION").Range("A3:G100").ClearContents

'voir plutôt comme ceci: (il faut activer la feuille !!!)
Dim lastLine As Long
Sheets("SUIVI DE FORMATION").Activate
lastLine = ActiveSheet.Range("A3").End(xlUp).Row + 1
ActiveSheet.Range("A3:G100").ClearContents


EDIT: idem
'ici tu as ceci:
ActiveWorkbook.Sheets("SUIVI DE FORMATION").Range("A" & lastLine) = Cells(cell_TableauFonderie.Row, 3) 'PROGRAMME DE FORMATION
ActiveWorkbook.Sheets("SUIVI DE FORMATION").Range("B" & lastLine) = Cells(5, cell_TableauFonderie.Column + 1) 'OPERATEUR
ActiveWorkbook.Sheets("SUIVI DE FORMATION").Range("C" & lastLine) = Cells(5, 2) 'SECTEUR
ActiveWorkbook.Sheets("SUIVI DE FORMATION").Range("D" & lastLine) = Cells(cell_TableauFonderie.Row, 2) 'ACTIVITE
ActiveWorkbook.Sheets("SUIVI DE FORMATION").Range("E" & lastLine) = cell_TableauFonderie.Offset(0, 1) 'DATE DE FORMATION
ActiveWorkbook.Sheets("SUIVI DE FORMATION").Range("F" & lastLine) = cell_TableauFonderie.Offset(0, 1) + Cells(cell_TableauFonderie.Row, 26) 'DATE DE FORMATION + DUREE DE FORMATION
ActiveWorkbook.Sheets("SUIVI DE FORMATION").Range("G" & lastLine) = cell_TableauFonderie.Offset(0, 1) + Cells(cell_TableauFonderie.Row, 26) + Cells(cell_TableauFonderie.Row, 28) 'DATE DE FIN + TOURNUS

'voir plutôt comme ceci: (encore que la feuille concernée étant active, on peut se passer de With)
With ActiveSheet
.Range("A" & lastLine) = Cells(cell_TableauFonderie.Row, 3) 'PROGRAMME DE FORMATION
.Range("B" & lastLine) = Cells(5, cell_TableauFonderie.Column + 1) 'OPERATEUR
.Range("C" & lastLine) = Cells(5, 2) 'SECTEUR
.Range("D" & lastLine) = Cells(cell_TableauFonderie.Row, 2) 'ACTIVITE
.Range("E" & lastLine) = cell_TableauFonderie.Offset(0, 1) 'DATE DE FORMATION
.Range("F" & lastLine) = cell_TableauFonderie.Offset(0, 1) + Cells(cell_TableauFonderie.Row, 26) 'DATE DE FORMATION + DUREE DE FORMATION
.Range("G" & lastLine) = cell_TableauFonderie.Offset(0, 1) + Cells(cell_TableauFonderie.Row, 26) + Cells(cell_TableauFonderie.Row, 28) 'DATE DE FIN + TOURNUS
End With
Je te remercie pour le temps que tu as consacré pour répondre à mon besoin.
Je vais essayer de le vérifier demain avec ta modif. Je ne suis plus au bureau hahahaha.
Je te tiens au courant en tout cas merci beaucoup hihi
 

BENAM69

XLDnaute Junior
Je te remercie pour le temps que tu as consacré pour répondre à mon besoin.
Je vais essayer de le vérifier demain avec ta modif. Je ne suis plus au bureau hahahaha.
Je te tiens au courant en tout cas merci beaucoup hihi
Bonjour Roland,

Cela ne fonctionne toujours pas. Le problème persiste malgré le fait que j'ai modifié ce que tu as préconisé.
Je pense que ma feuille était déjà activée.

Je ne vois pas du tout le problème, ça fait C***. Aucune idée de ce qui cloche -_-'
 

Roland_M

XLDnaute Barbatruc
Bonjour,

bizarre que ça fonctionne avec le bouton et pas dans l'open !?
à part l'activation des feuilles concernées ... je ne voie pas !?

quand aux résultats, toi seul sais de quoi il en retourne pour aller voir dans les cellules concernées.
quelles cellules, dans quelle page, résultats attendus ... ... !?
il va te falloir plusieurs pages d'explications qui vont décourager tout intervenant de t'aider !

en plus la macro est beaucoup trop de répétitives, excuses moi mais c'est décourageant et indigeste.
si c'était un bug sur telle ou telle ligne on pourrait se pencher sur les lignes de codes concernées.
mais concernant des résultats non, c'est pas possible !
 

Roland_M

XLDnaute Barbatruc
re

j'ai vu une feuille qui se remplie ou pas selon l'endroit d'appel de la macro mais surtout quelle feuille est active !?
exp j'ai vu "SUIVI DE FORMATION" avec ou sans données effectivement !

par contre ça fonctionne avec ceci au début de la macro ! (activation de la feuille avec le bouton)
si tu veux bien mettre ces deux lignes de codes au début de la macro !

Sub CopierColler()
Application.ScreenUpdating = False' < ceci c'est pour la rapidité de l'exécution uniquement
Sheets("FORMATION USINAGE").Activate ' avec cette feuille active c'est ok !
 

BENAM69

XLDnaute Junior
re

j'ai vu une feuille qui se remplie ou pas selon l'endroit d'appel de la macro mais surtout quelle feuille est active !?
exp j'ai vu "SUIVI DE FORMATION" avec ou sans données effectivement !

par contre ça fonctionne avec ceci au début de la macro ! (activation de la feuille avec le bouton)
si tu veux bien mettre ces deux lignes de codes au début de la macro !

Sub CopierColler()
Application.ScreenUpdating = False' < ceci c'est pour la rapidité de l'exécution uniquement
Sheets("FORMATION USINAGE").Activate ' avec cette feuille active c'est ok !
Je suis vraiment désolé pour la répétition de mon code, je suis vraiment nul dans la programmation. Je débute dans la VBA.
J'ai récupéré des bouts de codes à droite et à gauche pour ensuite les compiler moi même, je me suis débrouillé comme j'ai pu ^^.

En tout cas, ça fonctionne très bien le collage des deux lignes que tu m'as fourni.

C'est même parfait hihi ^^

En tout cas je suis vraiment désolé pour le code présent dans mon fichier.

Je ne sais pas faire plus simple.

Merci beaucoup pour ton aide, le problème est réglé ^^.
Sais-tu où est le bouton pour ton mettre résolution de la discussion ?
 

Roland_M

XLDnaute Barbatruc
re

j'oublié, ici

ActiveWorkbook.Sheets("SUIVI DE FORMATION").Range("A3:G100").ClearContents
normalement c'est Range("A2:G100")

pour mettre résolu tu retournes à ton premier message tu édites et tu rajoutes au titre [RESOLU]
 

Discussions similaires


Haut Bas