Problème de macro dans classeur protégé

Bonjour,

Je suis novice en macro et je fais un test avec un de mes classeur, mais je n'arrive pas a exécuter la macro qui me permet de recopier les données poids de l'onglet 1 à l'onglet 2. Pour être plus claire je vous met une partie du fichier.

Quelqu'un aurait il une idée de ce qui bloque?

Merci d'avance

Laurence

PS: mdp: password et macro: essai

36essai-macro.zip (16.07 Ko)

Yop

Eyh eyh ce classeur me rappelle quelque chose ^^ D'ailleurs je n'ai toujours pas trouvé comment faire pour que ça se mette dans le bon tableau sans changer la macro... :/

Félicitations pour cette macro créée seul(e)

Pour ton problème, as tu bien activé les macros? (outils ==> macros ==> sécurité) et tu choisis moyen par exemple puis tu fermes excel et quand tu réouvres tu choisis activer les macros.

Ci-joint ton fichier avec une petite correction pour éviter le scintillement au déclenchement de la macro

Amicalement

27essai-macro-2.zip (18.08 Ko)

Merci ça fonctionne très bien! effectivement j'avais oublié d'activer les macros (je suis étourdie!).

Je n'aurais jamais réussi à la créer sans ton aide encore merci!

Je vais abuser de ta gentillesse et de ta patience mais comment fait on pour exécuter la macro a partir d'un bouton comme dans ton 1er exemple de la semaine dernière?

Merci merci...

Laurence

Bonjour,

Remplace le code qui se trouve dans le module par celui-ci :

Sub essai()
'MAcro dans pour lertle le 17/08/2010
Dim i As Byte
Dim annee
Dim lig As Integer
ActiveSheet.Unprotect ("password")
i = 2
annee = Sheets("1ere").Range("C45")
On Error GoTo fin
lig = WorksheetFunction.Match(annee, Sheets("Courbes poids").Range("A1:A65536"), 0)
For col = 4 To 26 Step 2
    Sheets("Courbes poids").Cells(lig + 2, i) = Sheets("1ere").Cells(45, col)
    i = i + 1
Next
ActiveSheet.Protect ("password")
Exit Sub
fin: MsgBox "l'année est inexistante en feuille Courbes Poids"
End Sub

Associe le ensuite à un bouton via la barre d'outils "Formulaire" disponible par Affichage / Barre d'outils

Amicalement

Edit : il suffit de changer l'année en C45 de la feuille 1 pour activer le code pour que les données soient transférée au bon endroit de la feuille Courbes.

Re

J'ai réussi à faire un début de truc qui me parait pas trop mal ^^ (encore un peu lourd et pas tout à fait complet mais bon... :/) (c'est ton ancien fichier mais c'est adaptable dans le nouveau, il suffit de créer les noms de cellule et de placer les macros aux mêmes endroits (une en Feuil2 (chez toi Courbe Poids) et une en module).

Pour le bouton, tu crées un bouton via la barre de dessin, puis tu cliques droit: affecter une macro et tu choisi celle que tu veux mettre

Amicalement

EDIT: @Dan: plus rapide (et plus efficace je pense) que moi -_-'. Ta macro est super courte par rapport à la mienne ^^

EDIT2: @Dan: il me met tout le temps la MsgBox "l'année est inexistante en feuille Courbes Poids" comment se fait-ce? Merci d'avance

15essai-courbes-4.zip (27.84 Ko)

[quote="SL2118"

EDIT: @Dan: plus rapide (et plus efficace je pense) que moi -_-'. Ta macro est super courte par rapport à la mienne ^^

EDIT2: @Dan: il me met tout le temps la MsgBox "l'année est inexistante en feuille Courbes Poids" comment se fait-ce? Merci d'avance [/quote]

SL2118: Merci!

@Dan: En effet comme le dit SL2118 le message "l'année est inexistante en feuille Courbes Poids" s'affiche toujours et la macro ne fonctionne pas...

Merci à vous d'essayer de m'aider à résoudre ce problème

re,

Le problème vient des protections.

Sub essai()
'MAcro dans pour lertle le 17/08/2010
Dim i As Byte, col as byte
Dim annee
Dim lig As Integer
ActiveSheet.Unprotect ("password")
Sheets("Courbes Poids").Unprotect ("password")
i = 2
annee = Sheets("1ere").Range("C45")
On Error GoTo fin
lig = WorksheetFunction.Match(annee, Sheets("Courbes poids").Range("A1:A65536"), 0)
For col = 4 To 26 Step 2
    Sheets("Courbes poids").Cells(lig + 2, i) = Sheets("1ere").Cells(45, col)
    i = i + 1
Next
ActiveSheet.Protect ("password")
Sheets("Courbes Poids").Protect ("password")
Exit Sub
fin: MsgBox "l'année est inexistante en feuille Courbes Poids"
Sheets("Courbes Poids").Protect ("password")
End Sub

Amicalement

Merci beaucoup, ça marche vraiment bien!

Laurence

Re

@Dan, serait-ce trop te demander que:

1)de juste m'expliquer à quoi sert cette ligne stp?

lig = WorksheetFunction.Match(annee, Sheets("Courbes poids").Range("A1:A65536"), 0)

2)de m'expliquer à quoi ça sert de définir une variable i dans le processus et de mettre i = i+1 stp?

Merci d'avance

(quand je compare le code que j'avais fait au tiens je me sens tout petit )

Amicalement

Re,

1)de juste m'expliquer à quoi sert cette ligne stp?

Permet de trouver la ligne où se trouve l'année dans la colonne A.

2)de m'expliquer à quoi ça sert de définir une variable i dans le processus et de mettre i = i+1 stp?

i définit le numéro de colonne en feuille courbes poids. Le i=i+1 permet de passer à la colonne suivante.

Donc au départ i= 2 parce que l'on est en colonne B. Ensuite, on passe en colonne C, D etc...

Amicalement

Merci beaucoup Dan

Rechercher des sujets similaires à "probleme macro classeur protege"