OVH Cloud OVH Cloud

Modifier les instructions d'une macro via une macro (suite pour Fx

5 réponses
Avatar
Tucky
Bonjour,

Effectivementt j'aurai pu donner plus de détails dès le début et ne pas
confondre support et Forum, désolé.
Je souhaiterai rajouter une boucle dans une WorkSheet, la Feuil1 (le projet
VBA est protégé par un mdp) - cf ex ci dessous. La feuil1 se trouve dans un
classeur source situé dans un répertoire sans aucun autre documents. En fait
je souhaiterai envoyer un classeur patch à l'utilisateur final, qui le
placerait dans le répertoire concerné et qui modifierai la macro de la feui1
de son classeur source.

J'espère avoir été assez clair dans mon explication.

Merci d'avance.

Tucky

Private Sub MAJ_nom_Click()
X = 2
Do Until X = 32
If Sheets("Paramétrage").Cells(X, 9) = "" Then
Sheets(X).Name = "Feuil" & X
******* EMPLACEMENT OU RAJOUTER UNE NOUVELLE BOUCLE
Else
Sheets(X).Name = Sheets("Paramétrage").Cells(X, 9)End If
X = X + 1
Loop
End Sub

5 réponses

Avatar
lSteph
Bonsoir,

je souhaiterai envoyer un classeur patch
Non c'est Beurk!


On efface tout et on remet ce qui est bon!

Cordialement.

lSteph

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

Bonjour,

Effectivementt j'aurai pu donner plus de détails dès le début et ne pas
confondre support et Forum, désolé.
Je souhaiterai rajouter une boucle dans une WorkSheet, la Feuil1 (le
projet
VBA est protégé par un mdp) - cf ex ci dessous. La feuil1 se trouve dans
un
classeur source situé dans un répertoire sans aucun autre documents. En
fait
je souhaiterai envoyer un classeur patch à l'utilisateur final, qui le
placerait dans le répertoire concerné et qui modifierai la macro de la
feui1
de son classeur source.

J'espère avoir été assez clair dans mon explication.

Merci d'avance.

Tucky

Private Sub MAJ_nom_Click()
X = 2
Do Until X = 32
If Sheets("Paramétrage").Cells(X, 9) = "" Then
Sheets(X).Name = "Feuil" & X
******* EMPLACEMENT OU RAJOUTER UNE NOUVELLE BOUCLE
Else
Sheets(X).Name = Sheets("Paramétrage").Cells(X, 9)End If
X = X + 1
Loop
End Sub


Avatar
FxM
Bonsoir,

Je suis d'autant plus d'accord avec lSteph que le projet est protégé et
que je ne citerais pas ici un moyen de dé(re)protéger une macro par une
autre macro si j'en avais un fiable à coup sûr.

Si certains codes ont été publiés, ceux que je viens de tester ont
provoqué plusieurs alertes de sécurité macro "faire confiance au projet
VBA" et autres du genre et rien donné de valable surtout si c'est
destiné à être envoyé à l'extérieur.

Sur le principe du patche avec ton code :
attention aux coupures de lignes !

Sub insere_dans_macro()
With
Workbooks("classeur_a_patcher.xls").VBProject.VBComponents("Feuil1").CodeModule
debut = .ProcStartLine("MAJ_nom_Click", vbext_pk_Proc)
.InsertLines debut + 7, "'1e ligne"
.InsertLines debut + 8, "'2e ligne"
'etc si besoin
End With
End Sub

@+
FxM




Bonjour,

Effectivementt j'aurai pu donner plus de détails dès le début et ne pas
confondre support et Forum, désolé.
Je souhaiterai rajouter une boucle dans une WorkSheet, la Feuil1 (le projet
VBA est protégé par un mdp) - cf ex ci dessous. La feuil1 se trouve dans un
classeur source situé dans un répertoire sans aucun autre documents. En fait
je souhaiterai envoyer un classeur patch à l'utilisateur final, qui le
placerait dans le répertoire concerné et qui modifierai la macro de la feui1
de son classeur source.

J'espère avoir été assez clair dans mon explication.

Merci d'avance.

Tucky

Private Sub MAJ_nom_Click()
X = 2
Do Until X = 32
If Sheets("Paramétrage").Cells(X, 9) = "" Then
Sheets(X).Name = "Feuil" & X
******* EMPLACEMENT OU RAJOUTER UNE NOUVELLE BOUCLE
Else
Sheets(X).Name = Sheets("Paramétrage").Cells(X, 9)End If
X = X + 1
Loop
End Sub


Avatar
Oliv'
*lSteph que je salut a écrit *:
Bonsoir,

je souhaiterai envoyer un classeur patch
Non c'est Beurk!


On efface tout et on remet ce qui est bon!

Cordialement.

lSteph


Pourquoi ne pas remplacer le classeur tout simplement ?
Prévoir un classeur qui ne contiendrait que des macros !

--
--
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Have a nice day
Oliv'
Pour me joindre : http://cerbermail.com/?V8r2o1YHl4
les sites références:
Excel :http://www.excelabo.net http://xcell05.free.fr/
http://dj.joss.free.fr/
http://frederic.sigonneau.free.fr/ http://www.excel-vba-francais.com/
Word : http://faqword.free.fr/
Outlook : http://faq.outlook.free.fr/
les archives : http://groups.google.com/group/microsoft.public.fr.outlook
OE6 : http://www.faqoe.com/
Sql : http://sqlpro.developpez.com/
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~


Avatar
Tucky
Bonjour,

Merci de vos réponses que je vais tester cet après-midi. Je sais que la
notion de patch n'est pas la meilleure, mais les utilisateurs ont déjà saisis
des infos dans leurs fichiers et je me disais que le patch était la solution
pour leur éviter une re-saisie.
Encore merci.

Tucky

Bonsoir,

Je suis d'autant plus d'accord avec lSteph que le projet est protégé et
que je ne citerais pas ici un moyen de dé(re)protéger une macro par une
autre macro si j'en avais un fiable à coup sûr.

Si certains codes ont été publiés, ceux que je viens de tester ont
provoqué plusieurs alertes de sécurité macro "faire confiance au projet
VBA" et autres du genre et rien donné de valable surtout si c'est
destiné à être envoyé à l'extérieur.

Sur le principe du patche avec ton code :
attention aux coupures de lignes !

Sub insere_dans_macro()
With
Workbooks("classeur_a_patcher.xls").VBProject.VBComponents("Feuil1").CodeModule
debut = .ProcStartLine("MAJ_nom_Click", vbext_pk_Proc)
.InsertLines debut + 7, "'1e ligne"
.InsertLines debut + 8, "'2e ligne"
'etc si besoin
End With
End Sub

@+
FxM




Bonjour,

Effectivementt j'aurai pu donner plus de détails dès le début et ne pas
confondre support et Forum, désolé.
Je souhaiterai rajouter une boucle dans une WorkSheet, la Feuil1 (le projet
VBA est protégé par un mdp) - cf ex ci dessous. La feuil1 se trouve dans un
classeur source situé dans un répertoire sans aucun autre documents. En fait
je souhaiterai envoyer un classeur patch à l'utilisateur final, qui le
placerait dans le répertoire concerné et qui modifierai la macro de la feui1
de son classeur source.

J'espère avoir été assez clair dans mon explication.

Merci d'avance.

Tucky

Private Sub MAJ_nom_Click()
X = 2
Do Until X = 32
If Sheets("Paramétrage").Cells(X, 9) = "" Then
Sheets(X).Name = "Feuil" & X
******* EMPLACEMENT OU RAJOUTER UNE NOUVELLE BOUCLE
Else
Sheets(X).Name = Sheets("Paramétrage").Cells(X, 9)End If
X = X + 1
Loop
End Sub





Avatar
FxM
Bonjour,

re-saisie ? Si tu n'as que des choses saisies et non "pensées", il n'est
pas bien difficile de récupérer les données d'un classeur pour le mettre
dans un autre.

Dans une feuille de calculs, tu le ferais par :
ancien classeur -> sélection | copier
nouveau classeur -> sélection | collage spécial | valeurs
nouveau classeur -> sélection | collage spécial | formats (et encore à voir)

Quelque chose comme : (non testé)

Sub Macro2()
'nom de l'ancien classeur (supposé ouvert)
set oldwb = workbooks("ancien_classeur.xls")
'nouveau classeur
set newwb = thisworkbook
'feuilles dont les données doivent être recopiées
arr = array("feuil1","feuil3")

'pour chacune des feuilles listées
for each sht in arr

'prendre dans l'ancien
oldwb.sheets(sht).cells.copy

'copier les valeurs dans le nouveau
newwb.sheets(sht).range("A1").PasteSpecial _
Paste:=xlPasteValues, Operation:=xlNone, _
SkipBlanks:úlse, Transpose:úlse

'copier les formats dans le nouveau
newwb.sheets(sht).range("A1").PasteSpecial _
Paste:=xlPasteFormats, Operation:=xlNone, _
SkipBlanks:úlse, Transpose:úlse

'feuille suivante
next sht

'fermer l'ancien classeur
oldwb.close false

End Sub

@+
FxM







Bonjour,

Merci de vos réponses que je vais tester cet après-midi. Je sais que la
notion de patch n'est pas la meilleure, mais les utilisateurs ont déjà saisis
des infos dans leurs fichiers et je me disais que le patch était la solution
pour leur éviter une re-saisie.
Encore merci.

Tucky

Bonsoir,

Je suis d'autant plus d'accord avec lSteph que le projet est protégé et
que je ne citerais pas ici un moyen de dé(re)protéger une macro par une
autre macro si j'en avais un fiable à coup sûr.

Si certains codes ont été publiés, ceux que je viens de tester ont
provoqué plusieurs alertes de sécurité macro "faire confiance au projet
VBA" et autres du genre et rien donné de valable surtout si c'est
destiné à être envoyé à l'extérieur.

Sur le principe du patche avec ton code :
attention aux coupures de lignes !

Sub insere_dans_macro()
With
Workbooks("classeur_a_patcher.xls").VBProject.VBComponents("Feuil1").CodeModule
debut = .ProcStartLine("MAJ_nom_Click", vbext_pk_Proc)
.InsertLines debut + 7, "'1e ligne"
.InsertLines debut + 8, "'2e ligne"
'etc si besoin
End With
End Sub

@+
FxM




Bonjour,

Effectivementt j'aurai pu donner plus de détails dès le début et ne pas
confondre support et Forum, désolé.
Je souhaiterai rajouter une boucle dans une WorkSheet, la Feuil1 (le projet
VBA est protégé par un mdp) - cf ex ci dessous. La feuil1 se trouve dans un
classeur source situé dans un répertoire sans aucun autre documents. En fait
je souhaiterai envoyer un classeur patch à l'utilisateur final, qui le
placerait dans le répertoire concerné et qui modifierai la macro de la feui1
de son classeur source.

J'espère avoir été assez clair dans mon explication.

Merci d'avance.

Tucky

Private Sub MAJ_nom_Click()
X = 2
Do Until X = 32
If Sheets("Paramétrage").Cells(X, 9) = "" Then
Sheets(X).Name = "Feuil" & X
******* EMPLACEMENT OU RAJOUTER UNE NOUVELLE BOUCLE
Else
Sheets(X).Name = Sheets("Paramétrage").Cells(X, 9)End If
X = X + 1
Loop
End Sub