Macro à l'activation d'une feuille, sauf si la feuille X été active

Bonjour,

En préambule, j'espère que je ne fait pas de doublon, je n'ai rien trouvé qui correspond à mon sujet, mais je ne sais pas trop comment le formuler (d'où le titre pas très clair).

Aussi j'espère que je n'ai pas loupé une étape "présentation" ou autre avant mon post ici, il ne me semble pas avoir vu quelque chose dans ce sens.

Pour passer sur ma question.

J'ai un fichier Excel qui est une usine à gas (je ne peux pas le transmettre en l'état, mais si besoin je peux essayer d'en retirer les informations sensibles) sur lequel j'ai désactivé le calcul automatique.

Afin que l'utilisateur (moi en général) ne voit pas la différence, j'ai mit 2 "macros" sur chaque feuille :

Private Sub worksheet_activate()
ActiveSheet.Calculate
End Sub

Et

Private Sub Worksheet_Change(ByVal target As Range)
ActiveSheet.Calculate
End Sub

Mon problème viens du fait que je doit occasionnellement copier des données (texte uniquement) depuis une feuille A vers une feuille B, hors l'activation de la première macro me supprime les données copiées.

Existe-t-il un moyen de faire en sorte de "calculer la feuille B sur activation, sauf si la feuille A été active juste avant" ou de conserver la copie ?

je précise également que concernant le VBA, j'arrive tout juste à bidouiller des trucs simples.

Merci d'avance pour vos réponses.

J'essayerai de mieux préciser si ce n'est pas clair.

Salut Lionel,

Le mieux serait de nous faire un fichier de 2-3 feuilles reprenant tes macros Calculate et de nous expliquer ce que tu trafiques, et comment, avec tes données texte que l'on comprenne le processus qui conduit à l'effacement de ces données.

A+

Bonjour Curulis,

Je joint un fichier Excel avec ma réponse, je pensais au départ devoir modifier toutes les valeurs du fichier pour pouvoir le transmettre mais deux feuilles blanches suffisent en y réfléchissant mieux.

Je cherche à copier (uniquement le texte) les données de la feuille B plage B4:B21 vers la feuille A C3:C20.

Je joint également un fichier pour exemple qui représente mieux ce que je fait, j'ai des postes nommés (poste 1, 2, ...) et un titre associé je doit les entrés sur ma feuille (Ex ici) avec quelques lignes entre chaque afin de détailler un peu et de faire des calculs.

Quand j'ai une grande quantité de postes, plutôt que de faire l'espacement à la main, j'ai bidouillé une macro à l’arrache qui m’insérè des lignes (sur la feuille poste). Ensuite je fait copier/coller en texte des nom avec les lignes vides sur ma feuille Ex.

Mais avec le recalcul des feuille à la sélection, les données copier disparaissent du presse-papier.

2feuillesab.xlsm (48.42 Ko)
3exemple.xlsm (84.36 Ko)

Bonjour,

En me penchant sur le problème à tête reposée, j'ai résolu mon problème, même si la méthode est assez bourrinne.

Pour reprendre mon premier exemple, j'ai modifier la macro sur activation de ma feuille A par :

Private Sub worksheet_activate()
Cells(3, 2).Value = "Ok"
ActiveSheet.Calculate
End Sub

Et la macro sur activation de ma feuille B par :

Private Sub worksheet_activate()
If (ActiveWorkbook.Sheets("B").Cells(3, 2).Value <> "") Then
ActiveWorkbook.Sheets("B").Cells(3, 2).Value = ""
Exit Sub
Else
ActiveSheet.Calculate
End If
End Sub

C'est pas une solution applicable dans tous les cas, mais comme je n'utiliser la feuille B que lors du premier quart d'heure d’utilisation du classeur pour rentrer et trier des données ...

Rechercher des sujets similaires à "macro activation feuille sauf ete active"