OVH Cloud OVH Cloud

créer une copie d'une feuille en vba

19 réponses
Avatar
Philippe
Bonjour,

J'ai besoin de créer une copie d'une feuille en vba.
J'ai enregistrer une macro :
click droit sur onglet \ déplacer ou copier \ créer une copie

Voilà le code résultat :
Sheets("modele").Select
Sheets("modele").Copy Before:=Sheets(1)

Mais ça ne marche pas : ya tout simplement rien qui se passe !

Quelqu'un aurait-il une idée ?
Merci d'avance,
Philippe

9 réponses

1 2
Avatar
Philippe
Merci Jean Luc,

j'halucine !
je ne vois pas pourquoi ça fonctionne pas.

Je lance souvent des macros depuis l'éditeur en cliquant sur exécuter macro.
J'ai actuellement une autre macro dans le module, qui fonctionne très bien
comme ça.

Je suis certain que le pb ne vient pas du lancement de la macro :
dans la macro ci-dessous
Je vais jusqu'à "titi" (ce qui n'étonnera personne)
Mais jamais jusqu'à "tutu" : ce qui devrait étonner tout le monde

MsgBox ("toto")
Workbooks("baseDecembreSenior.xls").Activate
MsgBox ("tata")
Sheets("modele").Select
MsgBox ("titi")
ActiveSheet.Copy Before:=Sheets(1)
MsgBox ("tutu")


Chez moi, Macro2 Macro3 fonctionnent :/

Philippe avait soumis l'idée :
Avec plaisir,
voilà

que ce soit la macro 2 ou macro 3
rien à faire

Merci Filk


http://cjoint.com/?buqtpTJ6DU


Ca ne te dis pas de mettre le fichier sur cjoint.com ? (ca dure 3 secondes :
tu parcours ton fichier, ca te donne une URL que tu copies dans ton prochain
post)

Ce sera largement plus facile pour t'aider.

Philippe


Bonjour,

Comment est lancé la macro ??

JJ

"Philippe" a écrit dans le message de
news:
Bonjour,

J'ai besoin de créer une copie d'une feuille en vba.
J'ai enregistrer une macro :
click droit sur onglet déplacer ou copier créer une copie

Voilà le code résultat :
Sheets("modele").Select
Sheets("modele").Copy Before:=Sheets(1)

Mais ça ne marche pas : ya tout simplement rien qui se passe !

Quelqu'un aurait-il une idée ?
Merci d'avance,
Philippe









--
JLuc









Avatar
JLuc
Est ce que, par hazard, tu n'aurais pas une macro sur la feuille
"modele" du type Worksheet_Activate ?
Ou une macro du Perso.xls qui ferait interference...

Philippe avait soumis l'idée :
Merci Jean Luc,

j'halucine !
je ne vois pas pourquoi ça fonctionne pas.

Je lance souvent des macros depuis l'éditeur en cliquant sur exécuter macro.
J'ai actuellement une autre macro dans le module, qui fonctionne très bien
comme ça.

Je suis certain que le pb ne vient pas du lancement de la macro :
dans la macro ci-dessous
Je vais jusqu'à "titi" (ce qui n'étonnera personne)
Mais jamais jusqu'à "tutu" : ce qui devrait étonner tout le monde

MsgBox ("toto")
Workbooks("baseDecembreSenior.xls").Activate
MsgBox ("tata")
Sheets("modele").Select
MsgBox ("titi")
ActiveSheet.Copy Before:=Sheets(1)
MsgBox ("tutu")


Chez moi, Macro2 Macro3 fonctionnent :/

Philippe avait soumis l'idée :
Avec plaisir,
voilà

que ce soit la macro 2 ou macro 3
rien à faire

Merci Filk


http://cjoint.com/?buqtpTJ6DU


Ca ne te dis pas de mettre le fichier sur cjoint.com ? (ca dure 3 secondes :
tu parcours ton fichier, ca te donne une URL que tu copies dans ton
prochain post)

Ce sera largement plus facile pour t'aider.

Philippe


Bonjour,

Comment est lancé la macro ??

JJ

"Philippe" a écrit dans le message
de news:
Bonjour,

J'ai besoin de créer une copie d'une feuille en vba.
J'ai enregistrer une macro :
click droit sur onglet déplacer ou copier créer une copie

Voilà le code résultat :
Sheets("modele").Select
Sheets("modele").Copy Before:=Sheets(1)

Mais ça ne marche pas : ya tout simplement rien qui se passe !

Quelqu'un aurait-il une idée ?
Merci d'avance,
Philippe









--
JLuc







--
JLuc






Avatar
Jacky
Re....
Non ceci ne fonctionne pas :


La machine a été rebooter depuis le non fonctionnement ??

JJ

"Philippe" a écrit dans le message de
news:
Merci Jacky,

Non ceci ne fonctionne pas :
ça ressemble à une macro de feuille
qui se déclenche sur un changement dans une cellule de la feuille.

J'ai placé ma macro dans Module1.
Mes autres macros fonctionnent très bien.
Je lance l'exécution comme souvent :
en cliquant sur exécuter sub



Ceci fonctionne ??
'----------
Private Sub Worksheet_SelectionChange(ByVal Target As Excel.Range)
MsgBox "test"
End Sub
'--------
JJ

"Philippe" a écrit dans le message
de


news:
à la main !
exécutée dans la fenêtre VBA

je viens de faire la même chose avec un beau classeur vierge

j'enregistre une macro
et quand je l'exécute...
... rien ! même pas une insulte de VBA me traitant d'infâme ignare

je comprends pas,
ya aucune raison que ça marche pas (enfin, j'aimerais savoir quelle
est la



raison)
je trouve des référence à cette méthode sur le web !
exemple :
Worksheets("MyBeginning").Copy after:=Worksheets(Worksheets.Count)
http://www.mvps.org/dmcritchie/excel/sheets.htm

mais pour moi,
rien à faire !





Bonjour,

Comment est lancé la macro ??

JJ

"Philippe" a écrit dans le
message




de
news:
Bonjour,

J'ai besoin de créer une copie d'une feuille en vba.
J'ai enregistrer une macro :
click droit sur onglet déplacer ou copier créer une copie

Voilà le code résultat :
Sheets("modele").Select
Sheets("modele").Copy Before:=Sheets(1)

Mais ça ne marche pas : ya tout simplement rien qui se passe !

Quelqu'un aurait-il une idée ?
Merci d'avance,
Philippe
















Avatar
Philippe
Rien sur la feuille modèle (j'ai vérifié dans vba)
Rien sur l'ouverture du classeur (j'ai commencé à travailler sur un classeur
vierge)
Quant au perso.xls je vois pas ce que ça pourrait être


Voici le code de mon perso.xls,
comme tu verras,
ya pas grand chose

Function LaFormule(cellule As Range)

' Je voudrais pouvoir récupérer la formule contenu dans une cellule,
' sous la forme d'une chaîne de caractère afin de pouvoir la manipuler.

LaFormule = cellule.Formula

End Function

Sub CollerEnValeur()
'
' CollerEnValeur Macro
' Coller en valeur
'
' Touche de raccourci du clavier: Ctrl+Maj+V
'
Selection.PasteSpecial Paste:=xlValues, Operation:=xlNone, SkipBlanks:= _
False, Transpose:úlse

End Sub


Function CharOccurs(chaine As String, cherche As String) As Integer
' Fonction qui renvoie le nombre d'occurences d'un caratère dans une chaine
' http://www.herve-thouzard.com/vb.phtml
' =CharOccurs(BC5;"/")
Dim vnb As Integer
Dim i As Integer
Dim tot As Integer
If Len(chaine) = 0 Then
CharOccurs = 0
Else
vnb = Len(chaine)
tot = 0
For i = 1 To vnb
If Mid(chaine, i, 1) = cherche Then
tot = tot + 1
End If
Next
CharOccurs = tot
End If
End Function
Function ChaineOccurs(chaine As String, cherche As String) As Integer
Dim longueurChaine As Integer
Dim longueurCherche As Integer
Dim nombreBoucles As Integer
Dim i As Integer
Dim nbOccursTrouv As Integer 'nb occurences
longueurCherche = Len(cherche)
longueurChaine = Len(chaine)

If longueurChaine < longueurCherche Then
ChaineOccurs = 0
Else

nombreBoucles = longueurChaine - longueurCherche + 1
nbOccursTrouv = 0

For i = 1 To nombreBoucles
If Mid(chaine, i, longueurCherche) = cherche Then
nbOccursTrouv = nbOccursTrouv + 1
End If
Next
ChaineOccurs = nbOccursTrouv
End If
End Function



Function At(chaine As String, cherche As String, occurence As Integer) As
Integer
' "Fonction qui renvoie la position du nième caractère "cherche" dans
"chaîne" "
' http://www.herve-thouzard.com/vb.phtml
' chaine dans laquelle on cherche ; chaine que l'on recherche ; occurence
recherchée
' renvoi la position

Dim vnb As Integer
Dim i As Integer
Dim position As Integer
Dim loccurence As Integer
If occurence = 0 Then
At = 0
Else
If Len(chaine) = 0 Then
At = 0
Else
loccurence = 0
position = 0
vnb = Len(chaine)
For i = 1 To vnb
If Mid(chaine, i, 1) = cherche Then
loccurence = loccurence + 1
If loccurence = occurence Then
position = i
Exit For
End If
End If
Next
At = position
End If
End If
End Function

Function concatenerplage(Plage As Range, _
Optional Séparateur As String) As String
Dim i As Long
concatenerplage = Plage(1)
If Plage.Count = 1 Then Exit Function
For i = 2 To Plage.Count
concatenerplage = concatenerplage & Séparateur & Plage(i)
Next i
End Function
' http://xlbysteph.free.fr/aideinformatique/news/chaineconcatener1.txt
'

Sub DoublonOrNotDoublon()
Dim Collec As New Collection, Cell As Range, Plage As Range
'Doublons coloriés
'Je voudrais en VBA sélectionner une plage de cellules, vérifier si chaque
cellule ne trouve pas
'son double dans la selection et si oui, lui affecter un format différent.
'
'Une variation sur la particularité des collections de déclencher une erreur
'lorsqu 'on tente de leur ajouter un membre qui a déjà le même nom de clé. En
'prenant comme clé la valeur "texte" des cellules parcourues, une erreur signe
'l 'apparition d'un doublon. La cellule qui a déclenché l'erreur est
coloriée en
'vert. A la fin du traitement, les doublons apparaissent en vert et les
cellules
'doublonnées ou uniques apparaissent en jaune :
'Attention : cette macro te signale la première valeur identifiée comme
doublon.
'Maintenant s 'il y en a plusieurs identiques et que tu veux toutes les
marquer :
'Utilises plutôt la macro ci dessous. Mais la double boucle peut rendre
'l 'exécution longuette selon la taille de la plage à examiner et la
puissance de
'ta machine ...

On Error Resume Next
Set Plage = Application.InputBox("Plage à examiner", Type:=8)
If IsEmpty(Plage) Then Exit Sub

For Each Cell In Plage
If Cell.Value <> "" Then
Collec.Add Cell.Value, CStr(Cell.Value)
If Err <> 0 Then
Err.Clear
Cell.Interior.ColorIndex = 43
Else
Cell.Interior.ColorIndex = 6
End If
End If
Next Cell
End Sub

'---------------------------
Function CompareDeuxChainesNoteDifference(M1 As Range, M2 As Range)

'From: "michdenis"
'Sent: 4/24/2003 7:46:08 AM
'Subject: Re: comparer des chaînes de caractères
'Bonjour Gary,
'à copier dans un module standard : Voici une fonction qui fait le travail
'M1 = "alfred gentille"
'M2 = "alfred ventil"

Dim A As Integer, R As String
For A = 1 To Len(M1)
If Mid(M2, A, 1) = Mid(M1, A, 1) Then
R = R & "_"
Else
If Mid(M2, A, 1) = "" Then
R = R & Mid(M1, A, 1)
Else
R = R & Mid(M2, A, 1)
End If
End If
Next

CompareDeuxChainesNoteDifference = R

End Function
'---------------------------

Function Virer_Accents$(chaine$)
'AV - Alain Vallon
' http://disciplus.simplex.free.fr/xl/formats.htm#vireraccents

Dim tmp$
tmp = Trim(chaine)
For i = 1 To Len(tmp)
x = Asc(Mid(tmp, i, 1))
Select Case x
Case 192 To 197: x = "A"
Case 200 To 203: x = "E"
Case 204 To 207: x = "I"
Case 209: x = "N"
Case 210 To 214: x = "O"
Case 217 To 220: x = "U"
Case 221: x = "Y"
Case 224 To 229: x = "a"
Case 232 To 235: x = "e"
Case 236 To 239: x = "i"
Case 241: x = "n"
Case 240, 242 To 246: x = "o"
Case 249 To 252: x = "u"
Case 253, 255: x = "y"
Case Else: x = Chr(x)
End Select
Virer_Accents = Virer_Accents & x
Next
End Function



Sub FixerEnConservantValeursEtFormat()
'
' Macro1 Macro
' Macro enregistrée le 05/05/2005 par Gary P.L. ZINS
' shift cntrl F

'
Selection.Copy
Selection.PasteSpecial Paste:=xlPasteValuesAndNumberFormats, Operation:= _
xlNone, SkipBlanks:úlse, Transpose:úlse
End Sub





Est ce que, par hazard, tu n'aurais pas une macro sur la feuille
"modele" du type Worksheet_Activate ?
Ou une macro du Perso.xls qui ferait interference...

Philippe avait soumis l'idée :
Merci Jean Luc,

j'halucine !
je ne vois pas pourquoi ça fonctionne pas.

Je lance souvent des macros depuis l'éditeur en cliquant sur exécuter macro.
J'ai actuellement une autre macro dans le module, qui fonctionne très bien
comme ça.

Je suis certain que le pb ne vient pas du lancement de la macro :
dans la macro ci-dessous
Je vais jusqu'à "titi" (ce qui n'étonnera personne)
Mais jamais jusqu'à "tutu" : ce qui devrait étonner tout le monde

MsgBox ("toto")
Workbooks("baseDecembreSenior.xls").Activate
MsgBox ("tata")
Sheets("modele").Select
MsgBox ("titi")
ActiveSheet.Copy Before:=Sheets(1)
MsgBox ("tutu")


Chez moi, Macro2 Macro3 fonctionnent :/

Philippe avait soumis l'idée :
Avec plaisir,
voilà

que ce soit la macro 2 ou macro 3
rien à faire

Merci Filk


http://cjoint.com/?buqtpTJ6DU


Ca ne te dis pas de mettre le fichier sur cjoint.com ? (ca dure 3 secondes :
tu parcours ton fichier, ca te donne une URL que tu copies dans ton
prochain post)

Ce sera largement plus facile pour t'aider.

Philippe


Bonjour,

Comment est lancé la macro ??

JJ

"Philippe" a écrit dans le message
de news:
Bonjour,

J'ai besoin de créer une copie d'une feuille en vba.
J'ai enregistrer une macro :
click droit sur onglet déplacer ou copier créer une copie

Voilà le code résultat :
Sheets("modele").Select
Sheets("modele").Copy Before:=Sheets(1)

Mais ça ne marche pas : ya tout simplement rien qui se passe !

Quelqu'un aurait-il une idée ?
Merci d'avance,
Philippe









--
JLuc







--
JLuc











Avatar
JLuc
Tout ca est vraiment etrange. Je vois pas d'ou peut venir le probleme.
As tu rebooter le pc comme l'a suggerer Jacky ?

--
JLuc
Avatar
Philippe
j'essaye


Tout ca est vraiment etrange. Je vois pas d'ou peut venir le probleme.
As tu rebooter le pc comme l'a suggerer Jacky ?

--
JLuc





Avatar
FILK
Re,

As-tu vérifier le niveau de sécurité des macros ? Outil option Securite
securite des macros ?

Philippe


Outils/Macros/Macro... selectionner la macro cree (Macro1, surement)
Executer

Philippe avait soumis l'idée :
Bonjour,

J'ai besoin de créer une copie d'une feuille en vba.
J'ai enregistrer une macro :
click droit sur onglet déplacer ou copier créer une copie

Voilà le code résultat :
Sheets("modele").Select
Sheets("modele").Copy Before:=Sheets(1)

Mais ça ne marche pas : ya tout simplement rien qui se passe !

Quelqu'un aurait-il une idée ?
Merci d'avance,
Philippe



--
JLuc






Avatar
Philippe
La réponse était simplissime,
comment n'y ai-je pas pensé plus tôt ?

Elle s'appelle : Kaspersky Anti-Virus Personal Pro
et sa fonction "protection en temps réel"

Merci Filk, JLuc et Jacky

Je crois que je vais faire un "commentaire général" sur le forum




Bonjour,

J'ai besoin de créer une copie d'une feuille en vba.
J'ai enregistrer une macro :
click droit sur onglet déplacer ou copier créer une copie

Voilà le code résultat :
Sheets("modele").Select
Sheets("modele").Copy Before:=Sheets(1)

Mais ça ne marche pas : ya tout simplement rien qui se passe !

Quelqu'un aurait-il une idée ?
Merci d'avance,
Philippe


Avatar
frsurfer
sympa de voir le bric-à-brac d'un code perso :-)
1 2