Se connecter avec
S'enregistrer | Connectez-vous

macro openoffice Calc qui ne marche pas ?

Dernière réponse : dans Programmation

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 :


  1. Private Sub Workbook_Open()
  2.  
  3. If Sheets("Feuil1").Visible = True Then Sheets("Feuil1").Visible = False
  4.  
  5. If InputBox("mot de passe", vbCritical) = "test" Then
  6. Sheets("Feuil1").Visible = True
  7. End If
  8.  
  9. 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 ? Le règlement n'est pas assez clair ?[/code]

Autres pages sur : macro openoffice calc marche

Lassé par la pub ? Créez un compte
Expert Programmation

Bonjour NatD, et bienvenue sur ce forum.

1°) Merci de prendre d'avoir pris connaissance du règlement et de mettre ton message en conformité. On ne présente pas son code avec [#3800c6], mais avec [code] :o  :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 ?

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...

Normal que la macro ne marche pas !

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

  1. Private Sub Workbook_Open()
  2. Dim oMonClasseur As variant, oFeuille As variant
  3. Rem Le classeur actif
  4. oMonClasseur = ThisComponent
  5. Rem La feuille concernée
  6. oFeuille = oMonClasseur.Sheets.getByName("Feuille1")
  7.  
  8. Rem Le reste du code
  9. If oFeuille.IsVisible = True Then oFeuille.isVisible = False
  10. End Sub

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 :
  1. Private Sub Workbook_Open()
  2.  
  3. Dim test As variant, Feuille1 As variant, Feuille2 As variant
  4.  
  5. Rem Le classeur actif
  6. test = ThisComponent
  7.  
  8. Rem La feuille concernée
  9. Feuille1 = test.Sheets.getByName("Feuille1")
  10. Feuille2 = test.Sheets.getByName("Feuille2")
  11.  
  12. Rem Le reste du code
  13. If Feuille1.IsVisible = True Then Feuille1.isVisible = False
  14. If Feuille2.IsVisible = True Then Feuille2.isVisible = False
  15.  
  16. If InputBox("mot de passe",vbCritical) = "test" Then Feuille1.isVisible = True
  17. If InputBox("mot de passe",vbCritical) = "mg" Then Feuille2.isVisible = True
  18.  
  19. End Sub


merci d'avance
:) 
Expert Programmation

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.
  1. Dim a As String
  2. a = InputBox("mot de passe", vbCritical)
  3. If a = "test" Then
  4. Feuille1.isVisible = True
  5. ElseIf a = "mg" Then
  6. Feuille2.isVisible = True
  7. EndIf

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 :

  1. Private Sub Workbook_Open()
  2.  
  3. Dim saisies_A As Variant
  4. REM le classeur actif
  5.  
  6. saisies_A = ThisComponent
  7.  
  8. REM les feuilles concernées
  9.  
  10. Feuille1 = saisies_A.Sheets.getByName("Feuille1")
  11. Feuille2 = saisies_A.Sheets.getByName("Feuille2")
  12.  
  13. REM code test
  14.  
  15. If Feuille1.IsVisible = True Then Feuille1.isVisible = False
  16. If Feuille2.IsVisible = True Then Feuille2.isVisible = False
  17.  
  18. Dim a As String
  19. a = InputBox("Saisir votre Mot de Passe",vbCritical)
  20.  
  21. If a = "1" Then
  22. Feuille1.isVisible = true
  23. ElseIf a = "2" Then
  24. Feuille2.isVisible = true
  25. EndIf
  26. End Sub


merci d'avance

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:

  1. Private Sub CommandButton_Click()
  2. Dim SomConvertie,SomEuros As Double
  3.  
  4. SomEuros=Range("B4")
  5. SomConvertie=SomEuros*655957
  6. Range("B6").Value=SomConvertie
  7.  
  8. End Sub


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

Klok a dit :
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.



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 !
Lassé par la pub ? Créez un compte