Macro qui s'exécute que la feuille active

MikaTI

XLDnaute Junior
Bonjour à tous,

J'ai un petit soucis d'exécution d'une macro.... (celle ci permet de créer des rdv vers outlook)
Cette macro est fonctionnelle seulement voilà un petit soucis.
Dans mon classeur j'ai 5 onglets, dont le dernier nommé "RECAP" regroupe toutes les données des autres onglets...
Donc dans cet onglet RECAP j'ai tous les rdv à exporter.

En fait, je suis obligé de me mettre sur l'onglet "RECAP" pour que la macro exporte tous les rdv regroupés... En effet si je me mets sur l'onglet 1 par exemple, et que j'exécute ma macro, ça m'exporte que les rdv de l'onglet 1.
Mais je veux uniquement que les rdv du dernier onglet (RECAP) qui soit exportés, peut importe l'onglet sur lequel je me trouve...

J'ai essayé de modifier le code, en vain...

Une petite aide :)

Merci bien

Code:
Sub supprime()

Dim OutlApp As New Outlook.Application
Dim OutlItems As Outlook.Items
Dim OutlMapi As Outlook.Namespace
Dim OutlFolder As Outlook.MAPIFolder
Dim Cell As Range
Dim appt As Outlook.AppointmentItem


'plage de donnée
For Each Cell In Range("A2:A" & Range("A6000").End(xlUp).Row)
'fin de plage de donnée

'Crée la sélection du calendrier dans Outlook
Set OutlApp = CreateObject("Outlook.Application")
Set OutlMapi = OutlApp.GetNamespace("MAPI")
Set OutlFolder = OutlMapi.GetDefaultFolder(olFolderCalendar)
Set OutlItems = OutlFolder.Folders("prospection").Items ' Nom du calendrier - Attention calendrier ajouté en dessous du calendrier par default et nom dans un nouveau groupe.
'Set OutlItems = OutlFolder.Items ' Calendrier par default


If OutlItems.Count > 0 Then
OutlItems.Remove OutlItems.Count
DoEvents
End If

Next

ajout

End Sub
 

Roland_M

XLDnaute Barbatruc
Re : Macro qui s'exécute que la feuille active

Bonjour,

difficile de d'aider avec cet exemple de code incomplet !
car je vois ceci> ajout
une routine appelée je suppose !?

et ici sans savoir sur quel feuille tu es !? aucune sélection de feuille !?
donc tu travailles sur une feuille active !? laquelle ?
For Each Cell In Range("A2:A" & Range("A6000").End(xlUp).Row)

si tu veux revenir à la feuille de départ il faut au début du code:
SvgFeuilActive$ = ActiveSheet.Name

ensuite tu sélectionnes les feuilles selon tes besoins ...
et à la fin de tout tu remets
Sheets(SvgFeuilActive$).Activate '<<<< et pas Sheets("Mafeuille").Active <!?
 

MikaTI

XLDnaute Junior
Re : Macro qui s'exécute que la feuille active

Bonjour,

difficile de d'aider avec cet exemple de code incomplet !
car je vois ceci> ajout
une routine appelée je suppose !?

et ici sans savoir sur quel feuille tu es !? aucune sélection de feuille !?
donc tu travailles sur une feuille active !? laquelle ?
For Each Cell In Range("A2:A" & Range("A6000").End(xlUp).Row)

si tu veux revenir à la feuille de départ il faut au début du code:
SvgFeuilActive$ = ActiveSheet.Name

ensuite tu sélectionnes les feuilles selon tes besoins ...
et à la fin de tout tu remets
Sheets(SvgFeuilActive$).Activate '<<<< et pas Sheets("Mafeuille").Active <!?

Bonjour Roland_M

Peut être que le fichier en lui même te parlera plus? Je le mets en pj...
En fait peu importe l'onglet sur lequel je me trouve, il faudrait vraiment que la macro s'exécute uniquement sur l'onglet "RECAP" car cet onglet est la compilation de tous les autres onglets, donc toutes les dates à exporter sur Outlook sont rassemblées sur cet onglet...
 

Pièces jointes

  • Copie de SUIVI PROSPECTION - V3.xlsm
    123.1 KB · Affichages: 24

Roland_M

XLDnaute Barbatruc
Re : Macro qui s'exécute que la feuille active

re

pas facile comme ça de comprendre tout le déroulement !?

mais tu dis:
"En fait peu importe l'onglet sur lequel je me trouve, il faudrait vraiment que la macro s'exécute uniquement sur l'onglet "RECAP" car cet onglet est la compilation de tous les autres onglets, donc toutes les dates à exporter sur Outlook sont rassemblées sur cet onglet..."

mais enfin quand tu effectues une lecture comme ici:
For Each Cell In Range("A2:A" & Range("A6000").End(xlUp).Row)

il faut tout de même bien savoir de quelle feuille il s'agit !
Range("A2:A" . . . ceci c'est sur la feuille active qui peut être n'importe laquelle du classeur actif en plus !?

il faut le workbook avec sa feuille et idem pour la recopie exemple (sans importance juste pour comprendre)
ThisWorkbook.Sheets("RECAP").Range("A4:A" & Range("A6000").End(xlUp).Row)
là on va lire et/ou écrire sur Cell de la feuille recap du classeur qui contient les codes c'est à dire ThisWorkbook

Workbooks(NomDuClasseur).Sheets(NomDeLaFeuil).Range(NomDuRang)
là on va lire et/ou écrire sur Cell du classeur sus nommé !

à partir de là on sait d'où on vient et où on va !

conclusion pour ton cas il faut que tu mettes déjà ceci au tout début de la routine:
ThisWorkbook.activate: sheets("RECAP").activate

auquel cas tu peux laisser après:
For Each Cell In Range("A2:A" & Range("A6000").End(xlUp).Row)
 
Dernière édition:

CISCO

XLDnaute Barbatruc
Re : Macro qui s'exécute que la feuille active

Bonjour

Bonjour,


Sheets(SvgFeuilActive$).Activate '<<<< et pas Sheets("Mafeuille").Active <!?

OK, la syntaxe proposée n'est vraiment pas bonne (vu mon niveau en VBA, c'est normal), mais c'est la même idée, sauver au début le nom de la feuille initiale (que cela soit dans SvgFeuilActive$ ou dans Mafeuille, peu importe), et réactiver cette feuille à la fin.

J'ai vu que tu utilises la "convention" des préfixes pour choisir tes noms, ici S pour sheet. OK. Mais à quoi correspond le vg au début et le $ à la fin, STP ?

@ plus
 

Roland_M

XLDnaute Barbatruc
Re : Macro qui s'exécute que la feuille active

re

Salut CISCO

j'ai bien compris au niveau syntaxe c'était le principe évidemment !

quand à la variable, je pensais que tu savais ça !? suis très surpris !?
mais soit si tu es plus formule que vb c'est normal ! (moi pas trop formules, on peut se compléter)

donc tu parles de cette variable nommée SvgFeuilActive$ = ActiveSheet.Name
SvgFeuilActive$ c'est une variable type string idem Dim SvgFeuilActive as string

concernant son nom SvgFeuilActive j'aurai pu mettre Dupond$= ... X$ = ... STHSTJZETJ= ...
je nomme de facon que soit explicite
SvgFeuilActive je vois tout de suite qu'il s'agit de la sauvegarde du nom de la feuille qui était active !

le signe $ c'est du Type string SvgFeuilActive$
le signe % c'est du type numérique entier SvgFeuilActive%
le signe & c'est du type numérique long SvgFeuilActive&
etc ...
 

CISCO

XLDnaute Barbatruc
Re : Macro qui s'exécute que la feuille active

Bonjour

re

Salut CISCO
...
le signe $ c'est du Type string SvgFeuilActive$
le signe % c'est du type numérique entier SvgFeuilActive%
le signe & c'est du type numérique long SvgFeuilActive&
etc ...

Et non, je ne savais pas... Merci pour l'info. Je savais pour le préfixe (Et encore, je me suis trompé dans mon dernier post, S pour String, et non pour Sheet) mais pas pour $, %, &. Je me suis acheté un livre sur le VBA mardi passé... J'ai déjà programmé en Basic et en Fortran (dans les années 80), fait une ou deux macros avec Excel4 (dans les années 90), fait un ou deux essais en VBA sur le forum, mais bon, j'ai du travail sur la planche en VBA... J'aimerai bien me remettre sur ce travail :[URL="http://www.excel-downloads.com/forum/166217-simulation-thermostat-dambiance.html?highlight=thermostat"]http://www.excel-downloads.com/forum/166217-simulation-thermostat-dambiance.html?highlight=thermostat[/URL]

@ plus
 
Dernière édition:

Discussions similaires

Statistiques des forums

Discussions
311 720
Messages
2 081 912
Membres
101 837
dernier inscrit
Ugo