Macro Openoffice Calc

Fermé
Claire - 28 févr. 2005 à 10:10
 bordelaplage - 7 janv. 2014 à 14:02
Je viens de transférer un fichier Excel sous OpenOffice, j'avais un bouton macro me permettant d'ajuster la hauteur des lignes qui ne fonctionne plus. J'ai voulu créer cette macro dans OpenOffice calc, sans connaitre Basic je l'ai enregistré. Outils / Macro / Enregistrer / puis j'ai sélectionné tout le document et en cliquant sur un inter-ligne au hasard, toutes les lignes s'ajustent, puis Terminer l'enregistrement.
Ensuite lorsque j'exécute la macro, rien ne se passe. ESt-ce un problème de fonctionnalité, de langage ou autre...
Merci de votre aide.
Nb: si vous voulez m'envoyer la macro écrite, je serai ravie.
A voir également:

58 réponses

troisieme fichier csv http://host01.pipebytes.com/get.php?key=10147654546867
0
Re,

Je viens de te donner une veritable usine à gaz alors tu peux essayer d'executer les macros du docAv pas à pas et ensuite tu verras. Dans les 2 premiers csv il n'ya pas de problemes mais c'est la 3eme qui bug.
Si tu veux plus de détails n'hésites pas!
0
lami20j Messages postés 21331 Date d'inscription jeudi 4 novembre 2004 Statut Modérateur, Contributeur sécurité Dernière intervention 30 octobre 2019 3 569
16 avril 2009 à 14:10
Re,

tu peux essayer d'executer les macros du docAv pas à pas et ensuite tu verras.
Il doit avoir un ordre d'exécution je suppose.

Je vois les modules
DocAv
DocAv1n
DocAv2_DocAv3
etc.

Les modules contiennent des procécures et fonctions.
Les quelles je dois exécuter?!
0
lami20j Messages postés 21331 Date d'inscription jeudi 4 novembre 2004 Statut Modérateur, Contributeur sécurité Dernière intervention 30 octobre 2019 3 569
16 avril 2009 à 14:12
Re,

Encore une chose.
Ces fichiers csv tu les obtiens comment?
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Dans DocAv2_DocAv3 execute la macro Sub DocAvR2() en enlevant ou pas les commentaires et ensuite tu peux executer les autres macros si tu a en besoin.
Cependant, il existe des macros que tu ne pourra pas executer car elles sont en lien avc des sites web et des mots de passe donc impossible que ça marche(je n'ai pas acces au mot de passe ,désolais) c'est le cas de toutes les macros contenant des fichiers .jsp
0
en fait moi je les télécharge sur un site intranet malheureusement tu pourra pas le faire car il te faut un mot de passe et je peux pas t'en filer car moi même je n'en dispose pas.
0
Re,

j'espere que tu t'en sors bien. Ce n'est pas un fichier simple à traiter
0
lami20j Messages postés 21331 Date d'inscription jeudi 4 novembre 2004 Statut Modérateur, Contributeur sécurité Dernière intervention 30 octobre 2019 3 569
16 avril 2009 à 14:43
Re,

Ben, je vais tester à la maison ce soir.
Toutefois tu me dis qu'il y a des macros que je ne pourrai pas exécuter : il faudra me dire lesquelles, comme ça je ne vais pas me casser la tête pour rien.

Tu ne m'as dit non plus l'erreur que tu obtiens.
En fait, tu pourra par exemple me dire exactement (dans l'ordre) ce que tu fais, et où ça coince.
0
Ok je vais te dire exactement ce qu'il faut faire et vu que tu le regardes ce soir je vais le faire un peu plutard si ça ne te pose aucun probléme.

sinon l'expression IIf tu m'avait di que ça équivaut à
If condition
instruction
else instruction...

mais en fait si je te donne l'expression xd = IIf(IsDate(xd), xd, Date) comment tu le mettrai en if, else... car j'y arrive pas
0
lami20j Messages postés 21331 Date d'inscription jeudi 4 novembre 2004 Statut Modérateur, Contributeur sécurité Dernière intervention 30 octobre 2019 3 569
16 avril 2009 à 14:57
Re,

je vais le faire un peu plutard si ça ne te pose aucun probléme.
Pas de problèmes.


En fait tu n'as pas besoin de else. Il suffit de tester si xd est date ou pas

Voici deux exemples


xd n'est pas une date
Sub date1()
    Dim xd
    xd = "salut"
    If Not IsDate(xd) Then
        xd = Date
    End If
    MsgBox xd
End Sub
xd est une date
Sub date2()
    Dim xd
    xd = #1/1/2009#
    If Not IsDate(xd) Then
        xd = Date
    End If
    MsgBox xd
End Sub

0
Re,
Sachant que ela fonctionne parfaitement sur Excel VBA ce n'est que sous Open Basic que cela bug au niveau du calcul de xd.
En fait xd est une date mais je la connais pas au début:
attend je te passe ma fonction tu verra: je t'ai mis quelques commentaires


Public ty As String, mois As String, sem As String, ys As String, ysj As String, yj As String, xd As Date

' Fonction de calcul d'interval de temps de 1998 à 2014


' Datecode de la variable xd facultative ( Date system par defaut )
' En année ty="a" ( Type par défaut )
' En année mois ty="amm"
' En semaine ty="ss"
' En année semaine ty="ass"
' En année semaine jour ty="assj"
' En année Jour ty="ajjj"

Public Function datecode(ty, xd)

Dim a_y1, a_y2, a_y3, a_m1, xy, xm, xj, c1, c2

'lettre correspondant à l'année
a_y1 = Array("K", "L", "M", "N", "P", "R", "S", "T", "U", "V", "W", "X", "A")
'année bissextile à 1 sinon 0
a_y2 = Array(0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0)
'1er jour de l'année lundi=0
a_y3 = Array(3, 4, 5, 0, 1, 2, 3, 5, 6, 0, 1, 3, 4)
'ne pas changer correspond au mois
a_m1 = Array(0, 31, 59, 90, 120, 151, 181, 212, 243, 273, 304, 334)




xd = IIf(IsDate(xd), xd, Date)

xy = Year(xd) - 1998
xm = Month(xd)
xj = Day(xd)
xw = WeekDay(xd, vbMonday)

c1 = a_y1(xy)
c2 = Int((a_m1(xm - 1) + a_y2(xy) + a_y3(xy) + xj - xw) / 7)
c3 = Right(a_m1(xm - 1) + a_y2(xy) + a_y3(xy) + xj + 999, 3)


If c2 = 0 Then
If a_y3(xy) = 0 Then
c2 = 0
Else
c2 = IIf(a_y3(xy) > 3, 52, c2)
c1 = IIf(a_y3(xy) > 3, a_y1(xy - 1), c1)
End If
End If

mois = Right(Str(xm + 100), 2)
ym = LCase(c1) & mois

c2 = IIf(a_y3(xy) < 4, c2 + 1, c2)
'c1 = IIf(c2 = 53 And a_y3(xy) = 0, a_y1(xy + 1), c1)
'c2 = IIf(c2 = 53 And a_y3(xy) = 0, 1, c2)

sem = Right(Str(c2 + 100), 2)
sem = IIf(sem = "00", "53", sem)

ys = c1 & sem
ysj = ys & xw
yj = LCase(c1) & c3
ty = LCase(ty)
datecode = c1
datecode = IIf(ty = "amm", ym, datecode)
datecode = IIf(ty = "ss", sem, datecode)
datecode = IIf(ty = "ass", ys, datecode)
datecode = IIf(ty = "assj", ysj, datecode)
datecode = IIf(ty = "ajjj", yj, datecode)

End Function


0
lami20j Messages postés 21331 Date d'inscription jeudi 4 novembre 2004 Statut Modérateur, Contributeur sécurité Dernière intervention 30 octobre 2019 3 569
16 avril 2009 à 15:12
Re,

Un exemple pour cette partie

c1 = a_y1(xy) 
c2 = Int((a_m1(xm - 1) + a_y2(xy) + a_y3(xy) + xj - xw) / 7)  
c3 = Right(a_m1(xm - 1) + a_y2(xy) + a_y3(xy) + xj + 999, 3) 


If c2 = 0 Then 
If a_y3(xy) = 0 Then 
c2 = 0 
Else 
c2 = IIf(a_y3(xy) > 3, 52, c2) 
c1 = IIf(a_y3(xy) > 3, a_y1(xy - 1), c1) 
End If 
End If


qui deviens
c1 = a_y1(xy) 
c2 = Int((a_m1(xm - 1) + a_y2(xy) + a_y3(xy) + xj - xw) / 7) 
c3 = Right(a_m1(xm - 1) + a_y2(xy) + a_y3(xy) + xj + 999, 3) 


If c2 = 0 Then 
  If a_y3(xy) = 0 Then 
    c2 = 0 
  Else 
    if a_y3(xy) > 3 then 'les valeurs de c1 et c2  change seulement si a_y3(xy) > 3
      c2 = 52 
      c1 = a_y1(xy - 1) 
  End If 
End I

0
Re,

Ok merci!!
Mais en fait c'est xd qui améne le bug. J'ai pensé que la déclaration de variables de dates n'est peut etre la même sous Excel que sous Open? Mais vu que je suis nul en progammation je sais pas trop ce qu'il faut faire?
0
Re,

Au fait ma fonction ne bug plus sur open office

en effet il fallait déclarer les variables dans la fonction et non à l'exterieur: j'ai tatonné et ça marche maintenant reste à savoir si elle fonctionne partout.

merci de ton aide!!
0
Re,

Application.Run ("DocAvId") fonctionne bien sur Excel VBA mais elle bug sur OPEn OFFICE VBA

Savez vous pourqoi?

merci
0
Bonjour lami20j,

J'espere que mon fichier ne t'a pas beaucoup fatigué!
0
Re,

Mon probème est que je suis niveau 0 sur le basic de Open Office.org.
Par contre je sais programmer en VBA car je l'ai appris en classe mais jamis le basic de open office.org.

Alors est ce que vous voulez bien aidez s'il vous plait?
0
Rien ne fonctionne correctement dans cet suite bureautique il suffit pour s'en convaincre de faire le petit test suivant créer un tableau avec deux colonnes une numéro et l'autre prenom on tape quelques prénoms puis dans la colonne numéro inscrire un 1 au hazard devant certain des prénom. Ensuite faire outils/macros/enregistrer macro. sélectionner le mini tableau que vous venez de créer puis données/filtre/filtre standard indiquer la colonne numéro choisir = et 1. votre tableau est filtré maintenant sélectionné la partie triée faites copié aller sur la feuille 2 puis coller revenez sur la feuille une afin de supprimer le filtre et arrèter l'enregistrement donner un nom a votre macro avant d'executer la macro je vous conseil de faire une sauvegarde de vos macro précédentes ceci fait lancer la macro et admirer le résultat. Si chez vous cela fonctionne correctement chapeau car chez moi cela j'ai tenté a plusieurs reprise de la faire et le résultat est toujours le mème un échec cela semble fonctionner a peut avec filtre auto sur la version 2.0 mais lors dela copie sur la deuxieme feuille je me retrouve avec des prénoms qui ne font pas partis de la sélection filtré vous avez une alternative a MS OFFICE je dirais plutôt un casse tête incompréhensible pour une action si simple
-1
Apprends à te servir de tes doigts et de ton neurone.
0