Macro Openoffice Calc
Fermé
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.
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:
- Exemple macro libreoffice calc
- Tableau word exemple - Guide
- Url exemple - Guide
- Telecharger macro convertir chiffre en lettre excel - Télécharger - Tableur
- Exemple de code ascii - Guide
- Tableau croisé dynamique excel exemple - Guide
58 réponses
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!
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!
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
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?!
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?!
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
16 avril 2009 à 14:12
Re,
Encore une chose.
Ces fichiers csv tu les obtiens comment?
Encore une chose.
Ces fichiers csv tu les obtiens comment?
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
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
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.
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
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.
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.
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
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
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
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
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 Subxd est une date
Sub date2() Dim xd xd = #1/1/2009# If Not IsDate(xd) Then xd = Date End If MsgBox xd End Sub
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
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
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
16 avril 2009 à 15:12
Re,
Un exemple pour cette partie
qui deviens
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
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?
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?
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!!
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!!
Re,
Application.Run ("DocAvId") fonctionne bien sur Excel VBA mais elle bug sur OPEn OFFICE VBA
Savez vous pourqoi?
merci
Application.Run ("DocAvId") fonctionne bien sur Excel VBA mais elle bug sur OPEn OFFICE VBA
Savez vous pourqoi?
merci
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?
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?
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