Macro masquée, arriere plan

  • Initiateur de la discussion Yo de Chato
  • Date de début
Y

Yo de Chato

Guest
Bonjour,

Je débute tout juste dans le monde passionant des macros (sur excel) et je galere quelque peut. Je suis en train de developpe donc une classeur qui me permette de suivre l'évolution de mesures transmises via lien DDE.
Pour alleger mes echanges j'utilise une macro qui fait un copier/coller d'une partie d'un tableau dans une autre partie de tableau.
Mon probleme est que je voudrais cacher cette manipulation.
Pour cela j'utilise 'Application.screenupdating = False' malheursement en fin de macro, je suis sur la derniere cellule copiée alors que je ne voudrais pas bouger de la feuille ou je suis (différante de la feuille ou s'execute la macro).
Ma question donc : est il possible de rester sur la feuille ou j'étais et quand meme executer le copier / coller. Si non est il possible de mémoriser la feuille où je suis au déclanchement de la macro et de le reselectionner ensuite.
Enfin comment faire tourner les macros si excel est en arriere plan.

Merci de votre aide.

PS au bureau je n'ai ni l'aide vba excel, ni bouquin...
 

Robert

XLDnaute Barbatruc
Repose en paix
Bonsoir Yo de Chato, bonsoir le forum,

Tu pourrais rester dans le même onglet en faisant

Range('ta_plage_origine').Copy Destination:=Sheets('ton_onglet_cible').Range('ta_cellule_cible)

Ou bien déclarer une variable et y inscrire l'onglet de départ :

Dim OD as String
OD=ActiveSheet.Name


et en fin de macro revenir avec

Sheets(OD).Activate

Je n'ai pas de réponse pour ta dernière question.

p.s. Au boulot j'ai nenni laide (vé Béa) et un rouquin
 
Y

Yo de Chato

Guest
Salut

La premiere solution ne marche pas : j'ai un message d'erreur. Pour la seconde ça fonctionne mais malgré 'Application.screenupdating=false' je vois s'effectuer le changement de page.

Ca m'enerve un peut.

A+

Yo de Chato
 

Robert

XLDnaute Barbatruc
Repose en paix
Bonsoir Yo de Chato, bonsoir le forum,

Peut-être ton fichier ou un fichier exemple basé sur celui-ci pour que je puisse mieux cerner le problème...

Si ton fichier est trop lourd n'essaie pas de l'alléger mais part plutôt d'un classeur vierge, et fais-y quelques copier/coller des donnés ainsi que des codes qui nous intéressent.
 
Y

Yo de Chato

Guest
Salut.

Mon fichier est un peut volumineux. J'en ai extrais la macro penible.


il faut d abord creer une feuille 'aquisitions' de 2127 lignes au moins

Private Sub Worksheet_Calculate()

Dim OD As String
OD = ActiveSheet.Name

Application.ScreenUpdating = False

Sheets('Aquisitions').Select
Range('A6:S2125').Select
Selection.Copy
Range('A5').Select
ActiveSheet.PasteSpecial Format:=3, Link:=1, DisplayAsIcon:=False, _
IconFileName:=False
Sheets('Aquisitions').Select
Range('A2127:S2127').Select
Selection.Copy
Range('A2125').Select
Selection.PasteSpecial Paste:=xlValues, Operation:=xlNone, SkipBlanks:= _
False, Transpose:=False


Sheets(OD).Activate

Application.ScreenUpdating = True


Merci.

Yo de Chato
 

Robert

XLDnaute Barbatruc
Repose en paix
Bonjour Yo de Chato, bonjour le forum

Je ne comprends pas ta macro. Il n'y a aucun changement d'onglet, tout ce fait dans Acquisition... Du coup les lignes :
Dim OD As String
OD = ActiveSheet.Name

ne servent à rien !

D'autre part j'ai un bug sur :
ActiveSheet.PasteSpecial Format:=3, Link:=1, DisplayAsIcon:=False, _
IconFileName:=False

Pas trouvé dans l'aide à quoi correpond ce Format ???
 

Marc_du_78

XLDnaute Accro
Bonjour à tous,
est-ce que ceci peut vous aider ?

Cette méthode colle le contenu du Presse-papiers dans la feuille en respectant le format spécifié. Utilisez cette méthode pour coller des données provenant d'autres applications ou pour coller des données en respectant un format particulier.

expression.PasteSpecial(Format, Link, DisplayAsIcon, IconFileName, IconIndex, IconLabel, NoHTMLFormatting)
expression Obligatoire. Expression qui renvoie un objet Worksheet.

Format Argument de type Variant facultatif. Chaîne de caractères qui spécifie le format des données du Presse-papiers.

Link Argument de type Variant facultatif. Affectez-lui la valeur True pour établir un lien avec la source des données collées. Si les données sources ne conviennent pas pour la liaison ou que l'application source ne prend pas en charge la liaison, ce paramètre est ignoré. La valeur par défaut est False.

DisplayAsIcon Argument de type Variant facultatif. Affectez-lui la valeur True pour afficher les données collées sous la forme d'une icône. La valeur par défaut est False.

IconFileName Argument de type Variant facultatif. Nom du fichier qui contient l'icône à utiliser si l'argument DisplayAsIcon a la valeur True.

IconIndex Argument de type Variant facultatif. Numéro d'index de l'icône dans le fichier d'icônes.

IconLabel Argument de type Variant facultatif. Étiquette de texte de l'icône.

NoHTMLFormatting Argument de type Variant facultatif. Affectez-lui la valeur True pour supprimer la mise en forme, les liens hypertexte et les images du code HTML. Affectez-lui la valeur False pour coller le code HTML sans modification. La valeur par défaut est False.

Notes
Remarque L'argument NoHTMLFormatting n'a d'importance que lorsque Format = “HTML”. Dans tous les autres cas, NoHTMLFormatting sera ignoré.

Vous devez sélectionner la plage de destination avant d'utiliser cette méthode.

Cette méthode permet de modifier la sélection de la feuille en fonction du contenu du Presse-papiers.
 
Y

Yo de Chato

Guest
En fait il faut creer une feuille 'aquisitions'.
Dans mon classeur la feuille est rafraichies via lien DDE, à chaque changement elle se recalcule et la macro s'execute automatiquement. Pour tester la macro il faut faire dans le feuille 'aquisitions' A1=(feuille 1) A1+1. Vous verez que la macro s'execute mais que l'on voit le changement de feuille et le copier coller s'executer.

Yo de Chato
 

Statistiques des forums

Discussions
312 348
Messages
2 087 508
Membres
103 567
dernier inscrit
johnregular1