Modifier les instructions d'une macro via une macro (suite pour Fx
5 réponses
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
Cette action est irreversible, confirmez la suppression du commentaire ?
Signaler le commentaire
Veuillez sélectionner un problème
Nudité
Violence
Harcèlement
Fraude
Vente illégale
Discours haineux
Terrorisme
Autre
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
Bonsoir,
je souhaiterai envoyer un classeur patch
Non c'est Beurk!
On efface tout et on remet ce qui est bon!
Cordialement.
lSteph
"Tucky" <Tucky@discussions.microsoft.com> a écrit dans le message de news:
281CBA03-8087-478A-9417-07AA438539B9@microsoft.com...
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
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
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
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
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
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/ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
*lSteph <lecocosteph@frite.fr> 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/
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
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/ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
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
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
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
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
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
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