

![]() | Start a set with this search |
![]() | Include this search in one of my sets |
![]() | Exclude this search from one of my sets |
![]() | Permalink to these results Paste this link in email or IM: |
| Atom feed for tracking future search results Paste this URL into your reader: |
13 messages in org.openoffice.fr.progRe: [prog] conversion macro excel ve...| From | Sent On | Attachments |
|---|---|---|
| jacques23270 | May 28, 2007 8:28 am | |
| Bob | May 28, 2007 9:44 am | |
| SEGUIN François | May 28, 2007 9:48 am | |
| Jacques | May 28, 2007 10:48 am | |
| Bob | May 28, 2007 1:02 pm | |
| Bob | May 28, 2007 3:29 pm | |
| SEGUIN François | May 28, 2007 11:09 pm | |
| Jacques | May 29, 2007 10:40 am | |
| Bob | May 29, 2007 1:13 pm | |
| Bob | May 29, 2007 1:22 pm | |
| c.ma...@univitis.fr | May 29, 2007 11:14 pm | |
| steve | Jun 1, 2007 12:25 am | |
| Francois Gatto | Jun 1, 2007 4:17 am |

![]() | Permalink for this message Paste this link in email or IM: |
![]() | Permalink for this thread Paste this link in email or IM: |
| Atom feed for this thread Paste this URL into your reader: |
| Subject: | Re: [prog] conversion macro excel vers Open | Actions... |
|---|---|---|
| From: | Jacques (jacq...@laposte.net) | |
| Date: | May 29, 2007 10:40:57 am | |
| List: | org.openoffice.fr.prog | |
Bonjour Bob, Je te remercie de l'aide apporte mais je n'ai vraisemblablement pas les comptences pour suivre. Tes ides me semblent trs bonnes, mais mon dsir est de connatre le basic Ooo, j' ai donc continu sur la base Excel. Ce qui a donn : REM ***** BASIC ***** Option Explicit Sub Main Dim compt_colonne as integer, compt_ligne as integer, ligne_depart as integer, colonne_depart as integer Dim classeur as object, feuille_arrivee as object, feuille_depart as object, cellule_destination as object Dim cellule_arrivee as object, cellule_depart as object, I as integer, li as integer Dim valeur_cellule_arrivee as string, valeur_cellule_depart as string, ma_variable as integer Rem ---------------------------------------------------------------------- Rem define variables Dim document as object Dim dispatcher as object Rem ---------------------------------------------------------------------- Rem get access to the document Ma_variable = msgbox("Attention, cette procdure est rapide",1+48, EFFACEMENT DES COULEURS") If ma_variable = 1 then Document = ThisComponent.CurrentController.Frame Dispatcher = createUnoService("com.sun.star.frame.DispatchHelper")
Rem ---------------------------------------------------------------------- Dim args1(0) as new com.sun.star.beans.PropertyValue Args1(0).Name = "Nr" Args1(0).Value = 4
Dispatcher.executeDispatch(document, ".uno:JumpToTable", "", 0, args1())
Rem ---------------------------------------------------------------------- Args2(0) as new com.sun.star.beans.PropertyValue Args2(0).Name = "ToPoint" Args2(0).Value = "$E$6:$E$40"
Dispatcher.executeDispatch(document, ".uno:GoToCell", "", 0, args2())
Rem ---------------------------------------------------------------------- Dispatcher.executeDispatch(document, ".uno:Copy", "", 0, Array())
Rem ---------------------------------------------------------------------- Dim args4(0) as new com.sun.star.beans.PropertyValue Args4(0).Name = "Nr" Args4(0).Value = 5
dispatcher.executeDispatch(document, ".uno:JumpToTable", "", 0, args4())
Rem ---------------------------------------------------------------------- Dim args5(0) as new com.sun.star.beans.PropertyValue Args5(0).Name = "ToPoint" Args5(0).Value = "$AL$7"
Dispatcher.executeDispatch(document, ".uno:GoToCell", "", 0, args5())
rem ---------------------------------------------------------------------- Dim args6(5) as new com.sun.star.beans.PropertyValue Args6(0).Name = "Flags" (0).Value = "ST" Args6(1).Name = "FormulaCommand" Args6(1).Value = 0 Args6(2).Name = "SkipEmptyCells" Args6(2).Value = false Args6(3).Name = "Transpose" args6(3).Value = false Args6(4).Name = "AsLink" Args6(4).Value = false Args6(5).Name = "MoveMode" Args6(5).Value = 4
Dispatcher.executeDispatch(document, ".uno:InsertContents", "", 0, args6())
Classeur = thiscomponent Feuille_arrivee = classeur.sheets.getbyname("plan_annee") 'feuille_depart = classeur.sheets.getbyname("recap_annee")
Ligne_depart = 6 Colonne_depart = 5
For I = 1 to 35 Cellule_depart = feuille_arrivee.getcellbyposition(37,5+I) Valeur_cellule_depart = cellule_depart.getString
For compt_colonne = 5 to 25 For compt_ligne = 6 to 58 Cellule_arrivee = feuille_arrivee.getcellbyposition(compt_colonne compt_ligne) Valeur_cellule_arrivee = cellule_arrivee.getstring If valeur_cellule_arrivee = valeur_cellule_depart then With cellule_arrivee .cellbackcolor = cellule_depart.cellbackcolor End with End if Next Next Li = li + 1 next Elseif ma_variable = 2 then Msgbox("L'xecution est annule",64, "EFFACEMENT DES COULEURS") exit sub End if
'retour
Dim args7(0) as new com.sun.star.beans.PropertyValue Args7(0).Name = "ToPoint" Args7(0).Value = "$F$7"
Dispatcher.executeDispatch(document, ".uno:GoToCell", "", 0, args7())
End Sub
Certaines parties sont faites avec l'enregistreur, d'autres avec les infos fournie ou rcupres sur internet. Je pense que l'on peux amliorer la macro au niveau criture, afin de la rendre plus rapide ? J'attends vos remarques.
S'il y a un probleme par rapprt aux caracteres accentues, ne je sais d'ou cela vient !!
------- Message d'origine ------- De: Bob Date: 28/05/2007 18:43:35 A: pr...@fr.openoffice.org Sujet: Re: [prog] conversion macro excel vers Open
Bonjour Jacques,
Au lieu d'imbriquer des boucles et des switch, amha, tu dois pouvoir t'en sortir beaucoup plus efficacement avec des noms de styles bien choisis.
Tu nommes 35 styles de la fa?on suivante : - Planning_toto - Planning_titi - Planning_tutu - ...
o? toto, titi, tutu et les 32 suivants repr?sentent les diff?rentes valeurs que tu peux trouver dans tes 969 cellules de planning.
ta macro sera donc r?duite ? :
si le syle ("Planning" & ContenuCellule ) existe alors StyleCellule = "Planning" & ContenuCellule
(? traduire en vrai OOoBasic)
Tu appeleras ensuite cette macro de fa?on s?quentielle pour chaque cellule de ton champ Planning, ou mieux encore : de fa?on ?v?nementiel ? chaque changement de contenu d'une cellule de ce champ.
rmq : pour l'appel ?v?nementiel, je n'ai jamais fait, mais il me semble avoir compris que c'?tait possible.
Donc en r?sum?, ?a revient ? faire un formatage conditionnel avec le nom du style calcul? par une formule. Dommage que cette fonctionnalit? ne soit pas int?gr?e ? OOo, ce serait un plus par rapport ? la concurence ;-)
En esp?rant t'avoir aid?
Bob
jacques23270 a ?crit :
Bonjour, Suite ? un transfert de fichiers d?Excel vers Calc, j?ai un probl?me de conversion de macro. La macro sous Excel permet de mettre en couleur les cellules d?un planning de 969 cases en fonction du contenu de la case et des infos d?une autre feuille contenant les codes couleurs et les diff?rents textes servant ? la comparaison (35 infos diff?rentes). Cela donne sous excel, le code suivant :
Option Explicit Sub mise_en_couleur() Dim Compt_colonne, Compt_ligne, Spinner, Strings, i, texte1, li, col, colo
ColorIndex As Integer Dim msg, Style, Title, R?ponse, MaChaine msg = "Cette proc?dure dure de 30 ? 60 secondes, Voulez-vous la lancer ?"
D?finit le message. Style = vbYesNo ' D?finit les boutons. Title = "Mise en couleur du planning ann?e" ' D?finit les titres. ' Affiche le message. R?ponse = MsgBox(msg, Style, Title) If R?ponse = vbYes Then ' L'utilisateur a choisi le bouton Oui. MaChaine = "Oui" ' Accomplit une action. 'mise en couleur Sheets("4-plan-ann?e").Select ActiveSheet.Unprotect Range("F7").Select li = 6 col = 5 For i = 1 To 35 Sheets("3-R?capitulatif ann?e").Select Cells(li, col).Activate Strings = ActiveCell.Value Sheets("3-R?capitulatif ann?e").Select Cells(li, (col - 4)).Activate texte1 = ActiveCell.Value Sheets("4-plan-ann?e").Select For Compt_colonne = 6 To 25 For Compt_ligne = 7 To 58 If Cells(Compt_ligne, Compt_colonne) = Strings Then Cells(Compt_ligne, Compt_colonne).Interior.ColorIndex = texte1 End If Next Next li = li + 1 Next End If Range("F7").Select End Sub
Mon probl?me est de passer cette macro sous Calc. Quelqu?un peut-il m?aider ? d?avance merci







