macro openoffice Calc qui ne marche pas ?

NatD

Nouveau membre
Bonjour,

je souhaite mettre en place une macro qui permettrait sur un tableur openoffice de n'afficher une feuille que si le mot de passe attribué à cette feuille est correct.

ex:
un tableur est commun à 3 personnes (A,B et C).
la première feuille est visible par tous
la deuxieme feuille ne doit être visible que par A, il doit donc entrer un mot de passe pour la voir
la troisième feuille ne doit être visible que par B, il doit donc entrer un mot de passe pour la voir
la quatrième feuille ne doit être visible que par C, il doit donc entrer un mot de passe pour la voir.

j'ai essayé une macro trouvé dans un forum pour tester déjà sur une page :


Code:
Private Sub Workbook_Open()

If Sheets("Feuil1").Visible = True Then Sheets("Feuil1").Visible = False

If InputBox("mot de passe", vbCritical) = "test" Then
    Sheets("Feuil1").Visible = True
End If

End Sub

mais openoffice me dit qu'il y a une erreur dans la macro...

quelqu'un aurait une idée ?


____________________________
modo: Pourquoi est-ce à moi de mettre le [/code] ? Le règlement n'est pas assez clair ?
 

zeb

Modérateur
Bonjour NatD, et bienvenue sur ce forum.

1°) Merci [strike]de prendre[/strike] d'avoir pris connaissance du règlement [strike]et de mettre ton message en conformité. On ne présente pas son code avec , mais avec
Code:
 :o [/strike] :jap:

2°) Si OOo te dit qu'il y a une erreur, merci de nous la dire aussi :
Quelle erreur ?
Quel numéro d'erreur ?
A quelle ligne ?
 

NatD

Nouveau membre
ok désolé mais je ne m'y connait pas trop...

le message d'erreur qui apparait est "Runtime error BASIC.Sous-procédure ou procédure de fonction non définie" et la partie du macro concernée est :

If Sheets("Feuil1" ).Visible = True

en fait je n'y connait rien en macro mais c'est à priroi le seul moyen pour arriver à faire ce que je veux, donc j'essaie de m'y mettre...
 

Keral

Nouveau membre
Normal que la macro ne marche pas !

Il faut appeler ton classeur voici ta macro pour quel fonctionne.

[cpp]
Private Sub Workbook_Open()
Dim oMonClasseur As variant, oFeuille As variant
Rem Le classeur actif
oMonClasseur = ThisComponent
Rem La feuille concernée
oFeuille = oMonClasseur.Sheets.getByName("Feuille1")

Rem Le reste du code
If oFeuille.IsVisible = True Then oFeuille.isVisible = False
End Sub
[/cpp]
 

zeb

Modérateur
Merci Keral.
[strike]La remarque sur le règlement vaut aussi pour toi ![/strike]
 

Keral

Nouveau membre


Bonsoir !

Sorry j'ai réctifié mon oubli ;)
 

teremoana

Nouveau membre
bonjour,

j'ai un problème dans l'application de la macro. sur une feuille masquée RAS. mais pour en masquer 2 j'ai doublé les commandes, du coup il me demande le mot de passe pour chaque feuille et dans l'ordre.
n'y a-t-il pas un moyen pour afficher la feuille en fonction du mot de passe entré ?

voici mon code :
[cpp]
Private Sub Workbook_Open()

Dim test As variant, Feuille1 As variant, Feuille2 As variant

Rem Le classeur actif
test = ThisComponent

Rem La feuille concernée
Feuille1 = test.Sheets.getByName("Feuille1")
Feuille2 = test.Sheets.getByName("Feuille2")

Rem Le reste du code
If Feuille1.IsVisible = True Then Feuille1.isVisible = False
If Feuille2.IsVisible = True Then Feuille2.isVisible = False

If InputBox("mot de passe",vbCritical) = "test" Then Feuille1.isVisible = True
If InputBox("mot de passe",vbCritical) = "mg" Then Feuille2.isVisible = True

End Sub
[/cpp]

merci d'avance
:)
 

zeb

Modérateur
Evite de définir tes variables en Variant :/

> n'y a-t-il pas un moyen pour afficher la feuille en fonction du mot de passe entré ?
Si, bien sûr.
Code:
Dim a As String
a = InputBox("mot de passe", vbCritical)
If a = "test" Then
    Feuille1.isVisible = True
ElseIf a = "mg" Then
    Feuille2.isVisible = True
EndIf
 

teremoana

Nouveau membre
bonjour,

j'ai un nouveau problème avec cette macro :

mon fichier test marche bien, je l'ai créé chez moi avec ooo sous linux (débutant).
je l'amène au boulot , il marche avec ooo2.3.1 sous XP.

je reprend la macro sur le classeur dont j'avais besoin au boulot en changeant les noms du classeur et des onglets.

quand je l'ouvre il me demande si je veux appliquer la macro, je lui dis 'ok' et rien ne se passe. il affiche le classeur entier et ne demande pas de mot de passe.

par contre si je la lance manuellement depuis la gesion des macros elle marche.

je n'y comprend rien!!

est-ce quelqu'un a une piste?

voici la macro corrigée :

[cpp]
Private Sub Workbook_Open()

Dim saisies_A As Variant
REM le classeur actif

saisies_A = ThisComponent

REM les feuilles concernées

Feuille1 = saisies_A.Sheets.getByName("Feuille1")
Feuille2 = saisies_A.Sheets.getByName("Feuille2")

REM code test

If Feuille1.IsVisible = True Then Feuille1.isVisible = False
If Feuille2.IsVisible = True Then Feuille2.isVisible = False

Dim a As String
a = InputBox("Saisir votre Mot de Passe",vbCritical)

If a = "1" Then
Feuille1.isVisible = true
ElseIf a = "2" Then
Feuille2.isVisible = true
EndIf
End Sub[/cpp]

merci d'avance
 

Klok

Nouveau membre
Bonjour.

Je suis débutant (très débutant) en VBA et je souhaiterais faire une macro qui convertisse une certaine somme d'euros en francs en cliquant sur un bouton intégré a la feuille de calcul. J'utilise OpenCalc. Cependant a chaque fois que j'essaye de la lancer il m'envoie un message d'erreur "procédure ou sous procédure non définie" sur la ligne "SomEuros=Range("B4")". Voici mon code:

[cpp]Private Sub CommandButton_Click()
Dim SomConvertie,SomEuros As Double

SomEuros=Range("B4")
SomConvertie=SomEuros*655957
Range("B6").Value=SomConvertie

End Sub[/cpp]

Si quelqu'un pouvait m'expliquer.... Merci.
 

harlock59

Expert



pourquoi faire un bouton alors qu'un simple formule suffirait.

tu fais une case où tu entre une somme en euro (en l'indiquant sur une autre case proche en toutes lettres (Euros par exemple)

et dans l'autre case tu mets =(coordonnées_case_euro*6.55957) en remettant (Francs à côté de cette case et ca devrait suffire !
 

harlock59

Expert
j'ai oublié de préciser qu'il faudra valider la somme en euros en tapant sur entrée ou une flèche
 
Vous devez vous inscrire ou vous connecter pour répondre ici.
Derniers messages publiés
Statistiques globales
Discussions
730 132
Messages
6 718 029
Membres
1 586 388
Dernier membre
mery2005
Partager cette page
Haut