OVH Cloud OVH Cloud

Ne pas exécuter une macro qui n'existe pas !

13 réponses
Avatar
Herdet
Bonsoir à tous,
Comme entrée en matière, Monsieur de La Palisse n'aurait pas dit mieux que
l'objet du message !
But de la manip :
- copier une feuille d'un classeur dans un nouveau classeur
- supprimer le code de la feuille dans ce nouveau classeur
Problème :
la feuille incriminée comporte une Private Sub qui fait appel à d'autres
Sub du module "Principal" source.
Naturellement, le module "Principal" du nouveau classeur n'existant pas,
j'ai un beau message prévisible
"Erreur de compilation " Sub ou Fonction non définie

Si quelqu'un à la solution pour ne pas exécuter les macros du nouveau
classeur ou supprimer la Private Sub de la feuille active avant qu'elle ne
s'exécute, je suis preneur.

HS : depuis que Misange à supprimé (et je la comprends) les dates
d'anniversaires de excelabo, on a tendance à laisser passer des choses
essentielles de la vie.
Toutes mes excuses à JPS et BON ANNIVERSAIRE JEAN-PAUL !!!!!

Salutations
Robert

3 réponses

1 2
Avatar
Herdet
... et c'est un gaussage très amical mon cher Président du C.O.I.N
Vaut mieux ça qu'un dégaussage!!!
Quand on leur fait subir ce traitement, les écrans vidéo en tremblent de
jouissance mais les humains, je ne sais pas !!!!
Amitiés
Robert

"jps" a écrit dans le message de news:
Oc%
achhhhhhhhhhhhhhhhhhhhh
je n'avais pas vu qu'on se gaussait allègrement sur ma vieille
carcasse..elle a bon dos heureusement et merci quand même à cette
fripouille d'Herdet de m'avoir souhaité un joyeux zani
jps
PS perso à Sitting Hoax : j'ai alerté mes copains de la Yakuza (à
marseille, il faut les grands moyens) pour te faire rendre gorge de ce "A
part la fameuse chanson de qui vous savez, je ne vois pas ce qui peut vous
empêcher de venir au soleil faire une partie de boules avec nous;-)))"


"Herdet" a écrit dans le message de news:

OK, C'est tout bon Denis ! Ca marche au poil.
Et merci d'avoir veillé aussi tard pour trouver cette solution.
Cordialement
Robert

"michdenis" a écrit dans le message de news:

Bonjour Herdet,

Ceci copie la feuil1 du classeur dans les procédures
en évitant que les macros événementielles de la feuille copiée
s'exécute...

'-----------------------------
Sub test()
' 2 paramêtres : Le classeur où est la feuille
' Le nom de l'onglet de la feuille
CopierFeuilleSansVBA ThisWorkbook, "Feuil1"

End Sub

'-----------------------------
Sub CopierFeuilleSansVBA(Wk As Workbook, SonNom As String)

Dim Texte As String
With Wk.VBProject.VBComponents(Wk.Worksheets(SonNom) _
.CodeName).CodeModule
Texte = .Lines(1, .CountOfLines)
.DeleteLines 1, .CountOfLines
Sheets(SonNom).Copy
.AddFromString Texte
End With

End Sub
'-----------------------------


Salutations!




"Herdet" a écrit dans le message de news:

Bonsoir Denis,
Désolé, mais c'est la 1ere solution, copiée sur le site de Frédéric
Sigonneau, que j'ai essayé sans succés.
J'ai crée plusieurs procédures basées sur VBComponents mais elles butent
toujours sur le même appel de "Adaptation_Hauteur_ligne", qui n'existe
pas.
Cela se produit dans le code de la feuille, à chaque exécution de
ActiveWorkbook.Sheets(SonNom).Copy
La Sub de ma feuille source est :
Private Sub Worksheet_Activate()
Adaptation_Hauteur_ligne ' se trouve dans le module "principal" qui
n'existe pas
End Sub

C'est vrai ce que tu dis au sujet de JPS, ce n'est pas la peine de lui
casser le moral en lui rappelant son âge.
Et je dirais même qu'il n'est pas seul dans ce cas là.
A +
Robert

"michdenis" a écrit dans le message de news:
%
Bonjour Herdet,

Pour les anniversaires... il n'est pas nécessaire de rappeler
à tous les jours à ce bougre qu'il veuillit ...! ;-))

Si ton besoin est de copier une feuille sans le code ...

'------------------------
Sub test()
CopierFeuilleSansVBA ("Feuil1")
End Sub
'------------------------

Sub CopierFeuilleSansVBA(SonNom As String)

ActiveWorkbook.Sheets(SonNom).Copy
With ActiveWorkbook
.Sheets(SonNom).UsedRange.Value = _
.Sheets(SonNom).UsedRange.Value
With .VBProject. _
VBComponents(Sheets(SonNom).CodeName).CodeModule
.DeleteLines 1, .CountOfLines
End With
End With

End Sub
'------------------------


Salutations!




"Herdet" a écrit dans le message de news:
%
Bonsoir à tous,
Comme entrée en matière, Monsieur de La Palisse n'aurait pas dit mieux
que
l'objet du message !
But de la manip :
- copier une feuille d'un classeur dans un nouveau classeur
- supprimer le code de la feuille dans ce nouveau classeur
Problème :
la feuille incriminée comporte une Private Sub qui fait appel à
d'autres
Sub du module "Principal" source.
Naturellement, le module "Principal" du nouveau classeur n'existant
pas,
j'ai un beau message prévisible
"Erreur de compilation " Sub ou Fonction non définie

Si quelqu'un à la solution pour ne pas exécuter les macros du nouveau
classeur ou supprimer la Private Sub de la feuille active avant qu'elle
ne
s'exécute, je suis preneur.

HS : depuis que Misange à supprimé (et je la comprends) les dates
d'anniversaires de excelabo, on a tendance à laisser passer des choses
essentielles de la vie.
Toutes mes excuses à JPS et BON ANNIVERSAIRE JEAN-PAUL !!!!!

Salutations
Robert

















Avatar
Herdet
J'ai oublié le plus gros inconvenient très important : la mise en page de la
feuille disparait !!
Ensuite c'est la galère pour la refaire complètement en VBA et très lent car
les appels de code de mise en page à l'imprimante se font ligne par ligne
(bug du VBA !)
La mise en page par macro Excel4, traitée en bloc est plus rapide mais très
incomplète.

Salutations
Robert

"Herdet" a écrit dans le message de news:
%
Bonjour Alain,
Merci pour ta solution.
Elle présente toutefois les inconvénients du copier/coller basique :
- les objets Logo, Listes déroulantes, bouton ne sont pas copiés
- le formatage ne suit pas (quadrillage, le mode plan et les colonnes
masquées deviennent visible, ...)
- le nom de la feuille à été perdu.
La fonction "Déplacer/copier" directe fonctionne mieux en général.
Cordiales salutations
Robert

"Alain CROS" a écrit dans le message de news:
%
Bonjour,

Private Sub CommandButton1_Click()
With Application
.ScreenUpdating = False
.Cells.Copy
.Workbooks.Add xlWBATWorksheet
With .ActiveSheet
.Paste
.[A1].Select
End With
.CutCopyMode = False
.ScreenUpdating = True
End With
End Sub

Alain CROS

"Herdet" a écrit dans le message de news:
#
| Bonsoir à tous,
| Comme entrée en matière, Monsieur de La Palisse n'aurait pas dit mieux
que
| l'objet du message !
| But de la manip :
| - copier une feuille d'un classeur dans un nouveau classeur
| - supprimer le code de la feuille dans ce nouveau classeur
| Problème :
| la feuille incriminée comporte une Private Sub qui fait appel à
d'autres
| Sub du module "Principal" source.
| Naturellement, le module "Principal" du nouveau classeur n'existant
pas,
| j'ai un beau message prévisible
| "Erreur de compilation " Sub ou Fonction non définie
|
| Si quelqu'un à la solution pour ne pas exécuter les macros du nouveau
| classeur ou supprimer la Private Sub de la feuille active avant qu'elle
ne
| s'exécute, je suis preneur.
|
| HS : depuis que Misange à supprimé (et je la comprends) les dates
| d'anniversaires de excelabo, on a tendance à laisser passer des choses
| essentielles de la vie.
| Toutes mes excuses à JPS et BON ANNIVERSAIRE JEAN-PAUL !!!!!
|
| Salutations
| Robert
|
|








Avatar
Alain CROS
Bonjour,

Ok, je n'avais pas tous compris.
Plutôt que d'utiliser les VBComponents dont l'accès peut être interdit :

Private Sub Worksheet_Activate()
On Error Resume Next
Run "Adaptation_Hauteur_ligne" ' se trouve dans le module "principal" qui n'existe pas
On Error GoTo 0
End Sub

Alain CROS

"Herdet" a écrit dans le message de news:
| J'ai oublié le plus gros inconvenient très important : la mise en page de la
| feuille disparait !!
| Ensuite c'est la galère pour la refaire complètement en VBA et très lent car
| les appels de code de mise en page à l'imprimante se font ligne par ligne
| (bug du VBA !)
| La mise en page par macro Excel4, traitée en bloc est plus rapide mais très
| incomplète.
|
| Salutations
| Robert
|
| "Herdet" a écrit dans le message de news:
| %
| > Bonjour Alain,
| > Merci pour ta solution.
| > Elle présente toutefois les inconvénients du copier/coller basique :
| > - les objets Logo, Listes déroulantes, bouton ne sont pas copiés
| > - le formatage ne suit pas (quadrillage, le mode plan et les colonnes
| > masquées deviennent visible, ...)
| > - le nom de la feuille à été perdu.
| > La fonction "Déplacer/copier" directe fonctionne mieux en général.
| > Cordiales salutations
| > Robert
| >
1 2