[prog] syntaxe
Bonjour, je débute avec les macros. Après en avoir enregistré plusieurs, je vois bien que toute commande est une fonction du style dispatcher.executeDispatch(document, ".uno:DefineName", "", 0, Array()) où : le premier paramètre est le document le deuxième la commande Mais je n'arrive pas à trouver dans la doc la liste des commandes et les arguments à passer. En effet dans le cas de l'exemple donné, l'enregistreur n'a pas pris en compte le nom que j'avais donné à ma plage, ni son adresse, je ne vois donc pas comment la paramètrer Merci de m'aider _ Vous voulez savoir ce que vous pouvez faire avec le nouveau Windows Live ? Lancez-vous ! http://www.microsoft.com/windows/windowslive/default.aspx
Re: [prog] GCC_3.3 not found ??
Stéphane wrote: [...] /usr/bin/gij-4.0: /usr/local/OpenOffice.org1.1.4/program/libgcc_s.so.1: version `GCC_3.3' not found (required by /usr/lib/libgcj.so.6) /usr/bin/gij-4.0: /usr/local/OpenOffice.org1.1.4/program/libgcc_s.so.1: version `GCC_3.3' not found (required by /usr/lib/libgcj.so.6) [...] D'après Synaptic (le gestionnaire de paquets sous Ubuntu), j'ai le GCC 3.3.5, le 3.4.3 et le 4.0.0 ... je ne sais pas lequel OOo utilise par défaut ni d'ailleurs pourquoi OOo a besoin d'un compilateur pour lancer un script OOBasic ?? (j'ai du louper un truc là :/ ) [...] Mais là je sors un peu du domaine d'application de la liste ... je vais poster vers une liste Linux (Bon, si quelqu'un a la solution ici, je suis preneur ;) ) Pour savoir quelle est la version utilisée par défaut, fais un petit : gcc -v Manifestement, les libs d'OOo cherchent la version 3.3, mais sur ma debian Sid, je n'ai pas de /usr/bin/gij-4.0. Vérifies que ce n'est pas un lien pointant sur autre chose. -- Amicalement, Claude Thomassin SIRE - To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]
Re: [prog] GCC_3.3 not found ??
Stéphane wrote: [...] quant à gcc, j'obtiens un "command not found" Avec quel user as-tu essayé ? Ubuntu est un peu tordue du point de vue de la sécurité (c'est pour ça que j'ai laissé tomber pour le moment ;) [EMAIL PROTECTED]:~$ gcc -v Lecture des spécification à partir de /usr/lib/gcc-lib/i486-linux/3.3.6/specs Configuré avec: ../src/configure -v --enable-languages=c,c++,java,f77,pascal,objc,ada,treelang --prefix=/usr --mandir=/usr/share/man --infodir=/usr/share/info --with-gxx-include-dir=/usr/include/c++/3.3 --enable-shared --enable-__cxa_atexit --with-system-zlib --enable-nls --without-included-gettext --enable-clocale=gnu --enable-debug --enable-java-gc=boehm --enable-java-awt=xlib --enable-objc-gc i486-linux Modèle de thread: posix version gcc 3.3.6 (Debian 1:3.3.6-6) [EMAIL PROTECTED]:~$ [EMAIL PROTECTED]:~]> file /usr/bin/gcc-3.3 /usr/bin/gcc-3.3: ELF 32-bit LSB executable, Intel 80386, version 1 (SYSV), for GNU/Linux 2.2.0, dynamically linked (uses shared libs), stripped [EMAIL PROTECTED]:~]> file /usr/bin/gcc-3.4 /usr/bin/gcc-3.4: ELF 32-bit LSB executable, Intel 80386, version 1 (SYSV), for GNU/Linux 2.2.0, dynamically linked (uses shared libs), stripped [EMAIL PROTECTED]:~]> file /usr/bin/gcc-4.0 /usr/bin/gcc-4.0: ELF 32-bit LSB executable, Intel 80386, version 1 (SYSV), for GNU/Linux 2.2.0, dynamically linked (uses shared libs), stripped Chez moi : ls -la /usr/bin | grep gcc lrwxrwxrwx 1 root root 7 Mar 27 23:42 gcc -> gcc-3.3 -rwxr-xr-x 1 root root 85196 Jun 7 04:49 gcc-3.3 lrwxrwxrwx 1 root root 10 Mar 27 23:42 gccbug -> gccbug-3.3 -rwxr-xr-x 1 root root 16055 Jun 7 04:39 gccbug-3.3 lrwxrwxrwx 1 root root 7 Mar 27 23:42 i386-linux-gcc -> gcc-3.3 lrwxrwxrwx 1 root root 7 Jun 8 11:29 i386-linux-gcc-3.3 -> gcc-3.3 lrwxrwxrwx 1 root root 7 Jun 8 11:29 i486-linux-gcc-3.3 -> gcc-3.3 gcc est un lien symbolique vers gcc-3.3. Chez toi qui en a plusieurs versions installées (ça m'est arrivé lorsque certains paquets ont besoins d'une version précise de gcc pour fonctionner), il doit en aller de même. Le tout est de voir vers quelle version pointe ce lien (je parierai vers la version la plus récente : 3.4). Il devrait suffire de supprimer ce lien et d'en créer un pointant vers la version attendue par OOo (au moins le temps d'exécuter ta macro). Tu peux le modifier via midnight commander (mc) en sélectionnant le lien puis en tapant CTRL+x+s -- Amicalement, Claude Thomassin SIRE - To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]
Re: [prog] Appel à test - extension Cal c2Dokuwiki
Luc Sorel a écrit : [...] Quoi qu'il en soit, après avoir désinstallé la version précédente de Calc2Dokuwiki, y a-t-il des volontaires pour télécharger la nouvelle version <http://www.lucsorel.com/index.php?page=downloads#calc2dokuwiki> et la tester ? J'ai copié-collé ci-dessous les points que vous pouvez vérifier, si vous voulez. Sympathicamicalement, Luc (-> Laurent : ça m'a pris un paquet de temps avant de le taper sans regarder celui-là ! ;-) ) Sur ma debian Sid (OOo 2.2.1-8) ça fonctionne sans avoir besoin de bidouiller pour faire apparaître l'icone ;) Y'aurait pas la même chose pour les documents writer ? Bon, je sais, je suis gourmand :D -- Claude Thomassin SIRE - To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]
Re: [prog] Appel à test - extension Cal c2Dokuwiki
Luc Sorel a écrit : claude a écrit : Luc Sorel a écrit : [...] Sur ma debian Sid (OOo 2.2.1-8) ça fonctionne sans avoir besoin de bidouiller pour faire apparaître l'icone ;) Tu veux dire que l'icône apparaît directement sans aller dans Affichage/Barre d'outils ? Ou fais-tu allusion à la manip' suggérée par Laurent (consistant à modifier le répertoire interne de l'extension /meta-inf en /META-INF) ? Vi :) J'ai sélectionné l'extension dans outils/gestionnaire d'extension et je l'ai installé. J'ai fermé OOo, je l'ai réouvert et dans calc, j'ai l'icone qui apparait à gauche des nouveaux documents (en fait, c'est une barre d'outils mais je n'ai pas eu à passer par affichage pour l'avoir ;) Concernant ce 2e point, j'ai oublié de dire explicitement dans mon mail précédent que j'avais corrigé ce point-là dans la nouvelle extension disponible au téléchargement. Cette la nouvelle version que j'ai installé. Y'aurait pas la même chose pour les documents writer ? Bon, je sais, je suis gourmand :D On trouvera de quoi satisfaire notre grand gourmand dans cette extension : :-) http://extensions.services.openoffice.org/project/writertools En effet, WriterTools (il s'agit donc bien de documents Writer) inclut la macro : /Convert to DokuWiki/ converts the current document into DokuWiki format. Me voilà comblé (pas encore repu mais cela ne saurait tarder). Heu, comment tu sais que je suis grand ? :P -- Claude Thomassin SIRE - To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]
[prog] Copier/Coller une Cellule (ou Formules) vers N cellules
Bonjour, J'ai un assez gros classeur de données (5Mo, 9000 lignes), dans lequel il me faut ajouter quelques colonnes calculées. Je pose donc quelques formules en ligne 2 (Ex : dans les colonnes "AL", "AM", "AN"...), que je souhaite ensuite dupliquer jusqu'au bas de mon classeur ==> du genre Copier "AL2:AN2" /Coller (ou Collage Spécial des Formules) de "AL3:AN3" à "AL9000:AN9000". Pour le moment je n'ai pas trouvé autre chose que le Dispatcher pour faire ce Copier/Coller (ou une boucle d'enfer de SetFormula qui ne me convient pas plus...), quelqu'un aurait il quelque chose de plus efficient à me proposer (du genre "SetFormulaArray", mais celui ci nécessite un "GetFormulaArray" de taille identique...) ? Ensuite, pour soulager le classeur je fais un "Copier" / "Collage Spécial des Valeurs" pour les colonnes "AL:AN" avec un DataArray. D'avance Merci, Jean-Claude - To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]
RE: [prog] RESOLU Copier/Coller une Cellule (ou Formules) vers N cellules
Super, Merci. Terriblement plus efficace et tellement plus satisfaisant sur le plan "éthique" de la programmation... Ci joint l'adaptation exacte à mon problème avec mes commentaires (si cela peut servir à quelqu'un d'autre...) 'PB : Dupliquer dans "AL2:AO9000" la "1" ère ligne de cette sélection 'Zone globale : Source et Cible ZoneCible = oXL.Sheets(0).getCellRangeByPosition( 38, 1, 40, 9000) '1 seule Ligne à dupliquer - la 1ère - à dupliquer vers le Bas ZoneCible.fillAuto(com.sun.star.sheet.FillDirection.TO_BOTTOM, 1) >Bonjour >ZoneCible = MaFeuille.getCellRangeByPosition(0,0,5,2000) ' A1: F2001 sélectionne la zone ou va être recopiéela formule >ZoneCible.fillAuto(com.sun.star.sheet.FillDirection.TO_TOP, 1) 'recopie les formules sur plusieurs lignes à partir de la 1ére >Jluc >Pb : Copier "AL2:AN2" et les Coller de "AL3:AN3" à "AL9000:AN9000". - To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]
[prog] Ajouter une annotation (ou note ou commentaire) sur une cellule
Bonjour, J'ai bien trouvé "qu'insérer une note" (le terme semble être le même dans Ooo français ou Ooo anglais, et cela s'appelle un "commentaire" dans Excel) dans une cellule se traduisait en StarBasic par "insérer une annotation" ;-) mais ensuite j'ai un peu de mal à traduire l'exemple du SDK (en Java) en "StarBasic courant". Si quelqu'un l'a déjà fait ou peut me le traduire en StarBasic (cela doit tenir en 4 ou 5 lignes)... D'avance merci. Jean-Claude - To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]
[prog] RESOLU RE: [prog] RE : [prog] Ajouter une annotation (ou note ou commentaire) sur une cellule
Merci Sébastien, dans mes différentes tentatives je n'étais pas passé très loin... Au plus court, la solution est : oCell.Annotation.String = "Mon commentaire" Jean-Claude -Message d'origine- De : Sébastien VINOT [mailto:[EMAIL PROTECTED] Envoyé : vendredi 1 avril 2005 14:16 À : prog@fr.openoffice.org Objet : [prog] RE : [prog] Ajouter une annotation (ou note ou commentaire) sur une cellule Bonjour, J'ai mis un petit exemple de comment insérer une note sur mon site : http://www.logisphere.fr/composants/open_office/ Il s'agit de "Note_it". Je pense que c'est ce que tu recherches. Sébastien. -Message d'origine- De : [EMAIL PROTECTED] [mailto:[EMAIL PROTECTED] Envoyé : vendredi 1 avril 2005 13:59 À : prog@fr.openoffice.org Objet : [prog] Ajouter une annotation (ou note ou commentaire) sur une cellule Bonjour, J'ai bien trouvé "qu'insérer une note" (le terme semble être le même dans Ooo français ou Ooo anglais, et cela s'appelle un "commentaire" dans Excel) dans une cellule se traduisait en StarBasic par "insérer une annotation" ;-) mais ensuite j'ai un peu de mal à traduire l'exemple du SDK (en Java) en "StarBasic courant". Si quelqu'un l'a déjà fait ou peut me le traduire en StarBasic (cela doit tenir en 4 ou 5 lignes)... D'avance merci. Jean-Claude - To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED] - To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED] - To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]
[prog] Recherche de parents
Bonjour, je cherche à récupérer en StarBasic une référence sur le parent d'un objet ?... Je m'explique : Sub Test Dim oCell As Object oCell = ThisComponent.Sheets(0).getCellRangeByName("A1") Toto(oCell) End Sub Sub Toto(oCell As Object) Dim oSheet As Object 'Feuille parent de la cellule recue en paramètre oSheet = ... (oCell) 'A faire pointer sur la feuille container de la cellule : ThisComponent.Sheets(0). ... ... End Sub Si je passe oCell en paramètre à ma procédure Toto, comment puis-je y récupérer un objet oSheet qui pointe sur la feuille parente de la référence passée en paramètre à ma procédure (ici ThisComponent.Sheets(0) ) ... ______ D'avance merci Jean-Claude - To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]
RE: [prog] Recherche de parents
J'ai essayé : oSheet = oCell.getParent() ==> Propriété ou méthode introuvable... Je suppose que tu as essayé getParent(); [EMAIL PROTECTED] a écrit : >Bonjour, je cherche à récupérer en StarBasic une référence sur le parent >d'un objet ?... > >Je m'explique : > >Sub Test >Dim oCell As Object > oCell = ThisComponent.Sheets(0).getCellRangeByName("A1") > Toto(oCell) >End Sub > >Sub Toto(oCell As Object) >Dim oSheet As Object 'Feuille parent de la cellule recue en paramètre > oSheet = ... (oCell) 'A faire pointer sur la feuille container de la >cellule : ThisComponent.Sheets(0). > ... > ... >End Sub > >Si je passe oCell en paramètre à ma procédure Toto, comment puis-je y >récupérer un objet oSheet qui pointe sur la feuille parente de la référence >passée en paramètre à ma procédure (ici ThisComponent.Sheets(0) ) ... > > - To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]
RE: [prog] Recherche de parents
Pas mieux, même résultat ;-( -Message d'origine- De : Thomas Coquery [mailto:[EMAIL PROTECTED] Envoyé : jeudi 12 mai 2005 15:17 À : prog@fr.openoffice.org Objet : Re: [prog] Recherche de parents getContainer() alors ??? [EMAIL PROTECTED] a écrit : >J'ai essayé : >oSheet = oCell.getParent() ==> Propriété ou méthode introuvable... > > >Je suppose que tu as essayé getParent(); - To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]
RE: [prog] Resultset non nul pour une table vide
De mémoire, il me semble que le pointeur du resultSet pointe sur l'enregistrement "avant" le premier enregistrement. Je le parcoure alors de la manière suivante : oRst = oStatement.ExecuteQuery(strSQL) 'Exécution de la requête 'Parcoure les enregistrements Do While oRst.Next ... Loop Le IsNull() doit seulement indiquer la réussite de l'ouverture du resultset. Jean-Claude De : Martin blaizot [mailto:[EMAIL PROTECTED] DatabaseContext = createUnoService("com.sun.star.sdb.DatabaseContext") DataSource = DatabaseContext.getByName("Materiel") Connection = DataSource.GetConnection("","") Matable = Connection.Tables.getbyname("Provisoire") Statement = Connection.createStatement() Resultset = Statement.executeQuery("SELECT * FROM "& Matable.name &"") If Not IsNull(Resultset) Then Resultset.first Print"le libellé de mon premier champ est : ",Resultset.getString(1) End if Il me trouve un enregistrement alors que ma table est vide !!! - To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]
RE: [prog] Resultset non nul pour une table vide
Ci dessous extraits de la doc qui expliquent pour le resultset qu'un executequery n'est jamais null, et que le curseur est positionné à l'origine "before the first row" Jean-Claude = executeQuery( [in] string sql) raises(SQLException ); Description : executes a SQL statement that returns a single ResultSet. Parameter sql : the SQL statement which should be executed Returns : a ResultSet that contains the data produced by the query; never NULL Throws : SQLException if a database access error occurs. next() raises( SQLException ); Description : moves the cursor down one row from its current position. A ResultSet cursor is initially positioned before the first row; the first call to next makes the first row the current row; the second call makes the second row the current row, and so on. If an input stream is open for the current row, a call to the method next will implicitly close it. The ResultSet's warning chain is cleared when a new row is read. Returns : true if successful Throws : SQLException if a database access error occurs. - To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]
RE: [prog] Recherche de parents
Merci. >essaye ceci > >Sub Toto(oCell As Object) >Dim oSheet As Object 'Feuille parent de la cellule recue en paramètre >print oCell.SpreadSheet.Name >End Sub > >oCell.SpreadSheet contient bien l'objet feuille contenant ta cellule > >Laurent > -- Laurent Godard <[EMAIL PROTECTED]> - Ingénierie OpenOffice.org Indesko >> http://www.indesko.com Nuxeo CPS >> http://www.nuxeo.com - http://www.cps-project.org Livre "Programmation OpenOffice.org", Eyrolles 2004 - To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]
RE: [prog] Recherche de parents
Merci Bernard, XRay est très pratique mais il permet d'explorer les "objets subordonnés", c'est pourquoi je n'ai pas pensé à l'utiliser. J'avais oublié que dans le CellAddress on disposait de la feuille. De toute facon - en utilisant XRay - je n'aurais pas penser à rechercher dans CellAdddress pour y Trouver Sheet. XRay est très pratique quand on a une idée de l'endroit où se trouve ce que l'on cherche, mais ce n'est pas "un moteur de recherche". Encore merci Jean-Claude -Message d'origine- De : Bernard Marcelly [mailto:[EMAIL PROTECTED] > > getContainer() alors ??? > > >> J'ai essayé : >> oSheet = oCell.getParent() ==> Propriété ou méthode introuvable... >> >> >> Je suppose que tu as essayé getParent(); >> On peut continuer longtemps à deviner... Utilisez Xray pour inspecter les propriétés et fonctions disponibles sur un objet. La réponse est dans le chapitre 5.4 du HowTo API OpenOffice (presque) sans peine. Et bien sûr dans le livre Programmation OpenOffice.org p287. CoordCellule = UneCellule.CellAddress FeuilleCourante = CoordCellule.Sheet FeuilleCourante donne le numéro de la feuille dans le tableur. - To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]
[prog] Copie/Coller : CopyRange
Bonjour, Je souhaite copier des données (valeurs, formats...) entre 2 classeurs : * Source : un classeur que j'ouvre (ActiveWorkBook.Sheets(0) ) * Destination : ce classeur (ThisComponent.Sheets(2) ) Le code ci dessous me copie les données de ThisComponent.Sheets(0) vers ThisComponent.Sheets(2) au lieu des données ActiveWorkBook.Sheets(0) vers ThisComponent.Sheets(2) Qu'est-ce que j'ai fait de mal ??!! ;-0 D'avance, merci Jean-Claude (Ooo 1.1.3 / Windows 98) Sub TestCopyJCD Dim wkshtDestin As Object Dim ActiveWorkBook As Object 'Feuille destination, dans ce classeur wkshtDestin = ThisComponent.Sheets(2) 'Choix et ouverture du classeur contenant les données à copier, 'retourne en objet le classeur ouvert ActiveWorkBook = Ouvrir_Fichier_XL(Choisir_Fichier_Xl) 'Nom de la feuille source : Ok Print ActiveWorkBook.Sheets(0).Name 'Contenu d'une cellule source: Ok Print ActiveWorkBook.Sheets(0).getCellRangeByName("A2").String 'N° feuille source : Ok Print "Sheet = " & ActiveWorkBook.Sheets(0).getCellRangeByName("A1:M10").getRangeAddress.Sheet 'Plage feuille source à copier : Ok Print "Plage = " & ActiveWorkBook.Sheets(0).getCellRangeByName("A1:M10").getRangeAddress.StartR ow _ & ", " & ActiveWorkBook.Sheets(0).getCellRangeByName("A1:M10").getRangeAddress.StartC olumn _ & ", " & ActiveWorkBook.Sheets(0).getCellRangeByName("A1:M10").getRangeAddress.EndRow _ & ", " & ActiveWorkBook.Sheets(0).getCellRangeByName("A1:M10").getRangeAddress.EndCol umn 'Copie des données Pas ok !!! ;-( 'les données copiées sont celles de la 1ère feuille de ce classeur 'et pas celles de ActiveWorkbook ??!! wkshtDestin.copyRange ( wkshtDestin.getCellRangeByName("A1").getCellAddress, _ ActiveWorkBook.Sheets(0).getCellRangeByName("A1:M10").getRangeAddress) End Sub - To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]
RE: [prog] Copie/Coller : CopyRange
Merci, et tant pis... Le 2005-05-16 09:36, [EMAIL PROTECTED] a écrit : > Bonjour, > Je souhaite copier des données (valeurs, formats...) entre 2 classeurs : > * Source : un classeur que j'ouvre (ActiveWorkBook.Sheets(0) ) > * Destination : ce classeur (ThisComponent.Sheets(2) ) > Le code ci dessous me copie les données de ThisComponent.Sheets(0) vers > ThisComponent.Sheets(2) au lieu des données ActiveWorkBook.Sheets(0) vers > ThisComponent.Sheets(2) > > Qu'est-ce que j'ai fait de mal ??!! ;-0 Rien de mal ;) Tu peux lire dans la documentation SDK que CopyRange fonctionne sur un document. Ils ne disent pas : entre deux documents. Je ne vois pas d'autre solution que le copier/coller. - To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]
RE: [prog] Trouver la dernière cellule vide d'une colonne
Bonjour, à priori il n'y a pas d'équivalent dans Ooo à End(xlUp). La seule fonction qui existe retourne la dernière cellule de la feuille, ce qui n'est pas la même chose. Pour ma part je me suis fait une petite fonction qui me retourne la ligne de la dernière cellule d'une colonne. Cette fonction utilise une autre fonction qui retourne la ligne de la dernière cellule utilisée dans la feuille : '--- --- ' Retourne le N° de Ligne de la dernière cellule utilisée dans une colonne ' à partir d'une cellule. ' Auteur : Jean-Claude DAVID ' Ex : i = lGetLastLigFromCell ( oXLFeuil1.GetCellRangeByName("A1") ) '--- --- Function lGetLastLigFromCell( oCell As Object) As Long Dim oCurseur As Object 'Curseur d'accès à la dernière cellule de la feuille Dim i As Long 'Ligne courante Dim lDerLig as Long 'Dernière ligne utilisée dans la feuille Dim lFirstLig As Long 'Ligne de départ de la recherche Dim lCol As String 'Colonne de recherche Dim oFeuille As Object 'Feuille utilisée On Error Goto ErrorHandler 'Feuille utilisée oFeuille = oCell.SpreadSheet 'Dernière ligne utilisée dans la feuille lDerLig = lGetLastLig( oFeuille) 'Ligne de départ de la recherche lFirstLig = oCell.CellAddress.Row 'Colonne de recherche lCol = oCell.CellAddress.Column 'Parcourt de la dernière ligne utilisée dans la feuille, ' jusqu'à la première ligne de la zone passée en paramètre For i = lDerLig To lFirstLig Step - 1 'Dernière Ligne If oFeuille.getCellByPosition ( lCol, i).String <> "" Then lGetLastLigFromCell = i Exit For End If Next i Goto Exit_Here Exit_False: Exit Function Exit_Here: Exit Function ErrorHandler: MsgBox "lGetLastLigFromCell Erreur " & Err & " : " & Error$ & " (Ligne N°" & Erl & ")", sbCritical + sbOkOnly, Titre_Appli On Error Goto 0 Goto Exit_False End Function '--- --- ' Retourne le N° de Ligne de la dernière cellule utilisée d'une Feuille ' Auteur Jean-Claude DAVID ' Ex : i = lGetLastLig ( oXLFeuil1) '--- --- Function lGetLastLig( oFeuille As Object) As Long Dim oCurseur As Object 'Curseur d'accès à la dernière cellule de la feuille On Error Goto ErrorHandler oCurseur = oFeuille.createCursor 'Crée un curseur oCurseur.GotoEndOfUsedArea(True) 'Recherche de la dernière cellule utilisée lGetLastLig = oCurseur.getRangeAddress.EndRow 'Dernière Ligne Goto Exit_Here Exit_False: Exit Function Exit_Here: Exit Function ErrorHandler: MsgBox "lGetLastLig Erreur " & Err & " : " & Error$ & " (Ligne N°" & Erl & ")", sbCritical + sbOkOnly, Titre_Appli On Error Goto 0 Goto Exit_False End Function Bon courage, Jean-Claude -Message d'origine- De : superfan [mailto:[EMAIL PROTECTED] Envoyé : samedi 28 mai 2005 20:06 À : prog@fr.openoffice.org Objet : [prog] Trouver la dernière cellule vide d'une colonne Bonjour à tous, Le problème que j'ai est le suivant : J'ai deux colonnes (A et B), dans ces colonnes je recopie par macro des données en me positionnant sur la dernière cellule vide de la colonne A. Cette cellule vide n'est pas obligatoirement la cellule active par défaut. Les données que je suis amené à recopier varient en longueur (d'une ligne à plusieurs sur les 2 colonnes A et B). L'équivalent chez MS pour le tableur est End(xlUp). Comment peut on faire dans OpenOffice, j'ai essayé sans trouver. Merci par avance. - To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]
RE: [prog]Trouver_la_dernière_cellule_vide_d'une_colonne
Avec l'utilisation des 2 fonctions transmises hier, le N° de la 1ère ligne vide de la colonne "A" de la 1ère feuille est obtenu ainsi : FirstLigneVide = ThisComponent.Sheets(0).getCellByPosition( 0, lGetLastLigFromCell("A1")) + 1 et La sélection de la cellule vide s'effectue ainsi : ThisComponent.CurrentController.Select( ThisComponent.Sheets(0).getCellByPosition( 0, FirstLigneVide)) C'est aussi facile que d'utiliser le End(xlup). Jean-Claude -Message d'origine- De : Arnaud POUSSIER [mailto:[EMAIL PROTECTED] Envoyé : mardi 31 mai 2005 09:09 À : prog@fr.openoffice.org Objet : Re: [prog]Trouver_la_dernière_cellule_vide_d'une_colonne Bonjour à tous, C'est pour moi que tu avais déjà donné ce début de piste et voilà la macro que j'en ai sorti: Explication: Depuis la feuille principale de mon classeur, je voualis aller à la premiére cellule non remplie d'une colonne située sur une autre feuille. La variante qui est ici c'est que la macro permet d'aller à la derniére cellule remplie, comme Superfan je voulais quelque chose d'équivalent à End(xlUp), mais pour l'instant rien de mieux. Bonne journée @+ Bonjour à tous, Le problème que j'ai est le suivant : J'ai deux colonnes (A et B), dans ces colonnes je recopie par macro des données en me positionnant sur la dernière cellule vide de la colonne A. Cette cellule vide n'est pas obligatoirement la cellule active par défaut. Les données que je suis amené à recopier varient en longueur (d'une ligne à plusieurs sur les 2 colonnes A et B). L'équivalent chez MS pour le tableur est End(xlUp). Comment peut on faire dans OpenOffice, j'ai essayé sans trouver. Merci par avance. _ - To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]
RE: [prog] Problème pour lancer OOo en mode caché
Bonjour, Essaye donc déjà de retirer le "s" de arg() dans la dernière ligne. ;-) Jean-Claude -Message d'origine- De : Vincent Buys [mailto:[EMAIL PROTECTED] Envoyé : mercredi 1 juin 2005 12:13 À : prog@fr.openoffice.org Objet : [prog] Problème pour lancer OOo en mode caché Bonjour, J'ai un petit problème que je n'arrive pas à identifier. Je souhaite ouvrir un document en lançant une macro d'openoffice sans lancer l'interface graphique. Pour cela, j'utilise la propriété hidden de LoadComponentFromURL. Le problème c'est que j'ai le message d'erreur suivant "Runetime Error Basic, Variable d'objet non paramétrée" sur la dernière ligne du script que je vous mets ci après. (Sachez qu'en mode par défaut, donc sans la propriété hidden, le script fct très bien) Merci pour votre aide Vincent dim oDesktop as object dim oDocument as object dim sUrl as string sUrl = "file:///" + NomFichier dim arg(0) as new com.sun.star.beans.PropertyValue arg(0).Name ="Hidden" arg(0).Value = True oDesktop = createUnoService("com.sun.star.frame.Desktop") oDocument = oDesktop.loadComponentFromURL(sUrl,"_blank",0,args()) - To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED] - To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]
RE: [prog] Problème pour lancer OOo en mode caché RESOLU
"C'est au pied du mur que l'on voit le moins bien le mur..." C'est tellement plus facile de voir l'erreur de code d'un autre que les siennes sur lesquelles on peut repasser vingt fois sans rien remarquer... D'où l'intérèt de soumettre son code à un oeil moins subjectif que le sien, sur sa propre prose. Bonne continuation. Jean-Claude -Message d'origine- De : Vincent Buys [mailto:[EMAIL PROTECTED] Merci Jean Claude... ça fonctionne... que je suis distrait mea culpa... et dire que j'ai passé 2 jour à compiler la doc croyant que hidden était pas le bon paramètre -Message d'origine- De : [EMAIL PROTECTED] [mailto:[EMAIL PROTECTED] Bonjour, Essaye donc déjà de retirer le "s" de arg() dans la dernière ligne. ;-) Jean-Claude -Message d'origine- De : Vincent Buys [mailto:[EMAIL PROTECTED] Objet : [prog] Problème pour lancer OOo en mode caché Bonjour, J'ai un petit problème que je n'arrive pas à identifier. Je souhaite ouvrir un document en lançant une macro d'openoffice sans lancer l'interface graphique. Pour cela, j'utilise la propriété hidden de LoadComponentFromURL. Le problème c'est que j'ai le message d'erreur suivant "Runetime Error Basic, Variable d'objet non paramétrée" sur la dernière ligne du script que je vous mets ci après. (Sachez qu'en mode par défaut, donc sans la propriété hidden, le script fct très bien) Merci pour votre aide Vincent dim oDesktop as object dim oDocument as object dim sUrl as string sUrl = "file:///" + NomFichier dim arg(0) as new com.sun.star.beans.PropertyValue arg(0).Name ="Hidden" arg(0).Value = True oDesktop = createUnoService("com.sun.star.frame.Desktop") oDocument = oDesktop.loadComponentFromURL(sUrl,"_blank",0,args()) - To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]
[prog] Pb avec LockControllers
Bonjour, J'ai une application qui fonctionne très bien si je ne fige pas le rafraichissement. Mais quand je le fige (pour faire plus rapide et plus joli), j'ai divers soucis, notamment avec GotoEndOfUsedArea(True) qui ne retourne pas la dernière cellule "actuelle" de la feuille, mais celle "d'avant le blocage du rafraichissement". Quelqu'un a déjà rencontré le problème, est-ce connu ? Jean-Claude Ooo 1.1.3 sous Windows Dim oCurseur As Object ThisComponent.Sheets.getByName("Résultat").getCellByPosition( 10, 10).String = "X" oCurseur = ThisComponent.Sheets.getByName("Résultat").createCursor 'Crée un curseur oCurseur.GotoEndOfUsedArea(True) 'Recherche de la dernière cellule utilisée Print oCurseur.getRangeAddress.EndRow 'Dernière Ligne : Affiche 10, normal ThisComponent.LockControllers ThisComponent.Sheets.getByName("Résultat").getCellByPosition( 10, 10).String = "" ThisComponent.Sheets.getByName("Résultat").getCellByPosition( 8, 8).String = "X" oCurseur = ThisComponent.Sheets.getByName("Résultat").createCursor 'Crée un curseur oCurseur.GotoEndOfUsedArea(True) 'Recherche de la dernière cellule utilisée Print oCurseur.getRangeAddress.EndRow 'Dernière Ligne : Affiche aussi 10, pas normal ThisComponent.unLockControllers oCurseur = ThisComponent.Sheets.getByName("Résultat").createCursor 'Crée un curseur oCurseur.GotoEndOfUsedArea(True) 'Recherche de la dernière cellule utilisée Print oCurseur.getRangeAddress.EndRow 'Dernière Ligne : Affiche 8, normal ThisComponent.Sheets.getByName("Résultat").getCellByPosition( 8, 8).String = "" - To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]
[prog] RE: Pb avec LockControllers
Idem avec Ooo 1.9.100 > -Message d'origine- > Bonjour, > J'ai une application qui fonctionne très bien si je ne fige pas le > rafraichissement. > Mais quand je le fige (pour faire plus rapide et plus joli), j'ai divers > soucis, notamment avec GotoEndOfUsedArea(True) qui ne retourne pas la > dernière cellule "actuelle" de la feuille, mais celle "d'avant le blocage > du rafraichissement". > > Quelqu'un a déjà rencontré le problème, est-ce connu ? > > Jean-Claude > Ooo 1.1.3 sous Windows > - To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]
RE: [prog] Installation de la SDK
Bonjour, Pour l'utilisation d'OooBasic, tout ceci n'est pas utile, désolé ;-( J'ai suivi un parcours similaire avant de m'en rendre compte. Pour Ooo le SDK apporte "simplement" de la documentation. Ce qui est important et utile : - le Guide du développeur (Developper's Guide) - la référence des fonctions (IDL Reference)... Les documentations présentes sur le site francais d'Ooo (ou autres) et notamment : - "L'API presque sans peine" (Bernard MARCELLY) - "Eléments de programmation des macros dans OpenOffice" (Andrew PITONYAK) - "Porting Excl/VBA to Calc StarBasic" (?...) Jean-Claude -Message d'origine- De : ch'prof [mailto:[EMAIL PROTECTED] Bonjour, je souhaite me lancer dans l'étude d'OOoBasic, mais ça ne va pas sans mal : (Je suis sous XinXP avec un processeur Pentium4) - J'ai téléchargé l'archive OOo_1.9.91_Win32Intel_sdk.zip, je l'ai décompressée. - Ensuite, j'ai téléchargé et installé mingw32-make-3.80.0-3.exe. - Ensuite, j'ai téléchargé l'archive zip231xN.zip que j'ai simplement décompressée. Je n'ai pas installé de JDK ni de C++ compiler. J'ai double cliqué sur le fichier configureWindows.bat et j'ai indiqué les chemins vers tous les dossiers qui m'étaient demandés. Le problème c'est que je ne vois pas à quoi ça a servi... comment lancer l'application ? - To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]
RE: [prog] Barre d'état
Bonjour, pour l'écriture, j'utilise pour ma part une variable globale "oBarre_Etat As Object", et une fonction "StatusText", que j'utilise ainsi : .. StatusText "Initialisation de l'application..." ... '----- ' Affiche Texte dans Barre Etat ' Auteur : Jean-Claude DAVID [EMAIL PROTECTED] '- Sub StatusText(sInformation As String) On Error Goto ErrorHandler If IsNull(oBarre_Etat) Then oBarre_Etat = ThisComponent.CurrentController.StatusIndicator 'Définit la Barre d'état oBarre_Etat.setText(sInformation + SPACE(350 - Len(sInformation))) Goto Exit_Here Exit_False: Exit Sub Exit_Here: Exit Sub ErrorHandler: MsgBox "StatusText Erreur " & Err & " : " & Error$ & " (Ligne N°" & Erl & ")", sbCritical + sbOkOnly, Titre_Appli On Error Goto 0 Goto Exit_False End Sub > > Y A T IL MOYEN DE LIRE VIA BASIC LE CONTENU DE LA BARRE D ETAT ? > > PEUT ON AUSSI Y ECRIRE ? - To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]
[prog] RE: Pb avec LockControllers
Bon, pas de nouvelles depuis 5 jours... (ni sur le forum francais, ni même sur l'américain !!!) ;-((( Je suis étonné qu'un tel fonctionnement ne perturbe personne ? Tout le monde travaille avec le rafraichissement "On" ??!! Cela fait quand même sacrément ralentir l'exécution du code. Quelqu'un peut il quand même essayer le bout de code chez lui (17 lignes jointes au message du 06/06 13:44) et m'indiquer si le résultat est identique (il suffit de copier / coller le code et tapoter F5) ? Faut il ouvrir un Bug ? D'avance, merci Jean-Claude - To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]
[prog] RE: Pb avec LockControllers
Merci de ta réponse, même si elle ne fait pas avancer la chose. Que ce soit bien clair, je ne reproche rien à personne, je ne cherche pas lancer une polémique ou quoi que ce soit, chacun à ses problèmes, disponibilités, compétences, centres d'intérèts... Le "figeage" du rafraichissement d'écran pendant le déroulement d'un programme est généralement la 1ère ligne que je mets dans une procédure (même si je ne "l'active" qu'une fois le développement complètement terminé). Venant du VBA, c'est l'une des premières fonctions que j'ai recherché dans StarBasic, ceci permet l'exécution beaucoup plus rapide d'un programme, et ne perturbe pas l'utilisateur avec des feuilles qui bougent dans tous les sens... C'est donc plus efficace et plus propre. Le test demandé consiste à : - ouvrir un nouveau document Calc - ouvrir le Basic :Menu Outils/Macros/Macros... - descendre l'ascenseur de la liste déroulante de gauche jusqu'en bas et y sélectionner "Standard" (dans "Sans Nom 1") - cliquer sur "Nouveau" et valide le nom du module proposé - faire monter le curseur sur la 2ème ligne (juste sous "REM * BASIC ") - copier le code ci dessous, le coller dans le Basic à l'endroit où se trouve le curseur - appuyer sur F5 - noter le chiffre indiqué par chaque boite de dialogue (3 chiffres en tout) - me renvoyer ces valeurs ainsi que la version d'Ooo et de système d'exploitation utilisé Merci, Jean-Claude Sub Test Dim oCurseur As Object Dim oSheet As Object oSheet = ThisComponent.Sheets(0) oSheet.getCellByPosition( 8, 8).String = "X" oCurseur = oSheet.createCursor 'Find the sheet's last cell oCurseur.GotoEndOfUsedArea(True) 'Display "8", that's correct Print oCurseur.getRangeAddress.EndRow ThisComponent.LockControllers oSheet.getCellByPosition( 8, 8).String = "" oSheet.getCellByPosition( 10, 10).String = "X" oCurseur.GotoEndOfUsedArea(True) 'Also display "8", that's very BAD !!! Print oCurseur.getRangeAddress.EndRow ThisComponent.unLockControllers oCurseur.GotoEndOfUsedArea(True) 'Display "10", that's correct too Print oCurseur.getRangeAddress.EndRow oSheet.getCellByPosition( 10, 10).String = "" End Sub - To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]
[prog] RE: Pb avec LockControllers
Merci à tous pour vos réponses, au moins cela me conforte car je constate que ce problème de comportement est vérifié ailleurs par d'autres config. Même si je n'ais pas de solution, je sais que cela ne fonctionne pas correctement. J'en retiendrais donc que le GotoEndOfUsedArea ne marche pas "en modifications dynamiques de la feuille" si le LockControllers est activé (à graver dans mes tablettes). Encore merci, Jean-Claude - To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]
RE: [prog] assignement de macro pour une simple sélection de cellule
Bonjour, à ma connaissance il n'y a pas vraiment de possibilité en ce sens. En fonction de ton contexte, n'y a t'il pas moyen de contourner le problème, de le prendre de manière fondamentalement différente puisque la 1ère méthode qui est venue à l'esprit semble ne pas fonctionner. Non pas en codant, mais en laissant l'interface Ooo gérer le problème : - en masquant les lignes sous la ligne 20 - en protégeant certaine parties de la feuille - en jouant avec la "Validité de données" - ... ? Jean-Claude -Message d'origine- De : [EMAIL PROTECTED] [mailto:[EMAIL PROTECTED] [...] Bonjour Jean-Luc, merci pour ces précisions, je vais regarder les listener dans la bible ;) ce que je veux faire exactement : je voudrais qu'un MsgBox (différent selon les cas) apparaisse lorsque la cellule sélectionnée se trouve en-dessous de la ligne 30 (sur Calc donc). par exemple : si le user se positionne sur la cellule B35, je veux qu'un message lui soit affiché... voilà, merci bien, je vais explorer les pistes que tu m'as indiquées. William - To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]
RE: [prog]Trouver_la_dernière_cellule_vide_d'une_colonne
Bonjour, décris précisement ton besoin, éventuellement envoie en MP ton appli. Jean-Claude -Message d'origine- [...] Bonjour, J'ai cherché à adapter la macro pour la selection de la cellule vide mais pour l'instant je sèche lamentablement, surtout que la selection que je cherche à faire se trouve dans une autre feuille. - To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]
RE: [prog] Listbox notion de topindex? sous formulaire
Euh, excuses moi, mais je n'ai pas bien compris la question ;-( ??? Jean-Claude [..] Pour éviter cela je cherche non pas à imposer seulement un numéro d'item mais à lire celui de la listbox active. [..] - To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]
RE: [prog] Listbox notion de topindex? sous formulaire
Ok, j'ai compris. Je n'ai pas cherché, mais "à priori" je dirais qu'il n'y a pas de solution car cela correspond seulement un état transitoire de la liste (pendant la phase de recherche d'un élément avant sélection). De manière similaire, dans une feuille de classeur on ne va pas "surveiller" la position des ascenseurs verticaux et horizontaux. De plus, je ne vois pas de gros intérèt général à un évènement du type "1er élément visible de la liste en ce moment". Bon, ce n'est pas la réponse que tu attendais, c'est seulement mon avis... ;-(( Jean-Claude [...] Comment faire pour lire le numéro d'item situé en haut de la list box ( ouverte sous forme d'une fenêtre) ? [...] Existe -t-il une méthode pour lire ce numéro plutot que seulement l'imposer via makevisible(N°) ? - To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]
RE: [prog] Pb mailing
Bonjour, j'ai également été confronté à quelque chose de ce genre. Solution : rechercher les cellules vides de la Base de Données (Null) et les remplacer par " " ... ? Jean-Claude -Message d'origine- De : Alexandre MILLOT [mailto:[EMAIL PROTECTED] Envoyé : vendredi 10 juin 2005 16:40 À : prog@fr.openoffice.org Objet : [prog] Pb mailing Bonjour, j'ai developpé une macro pour interfacer le mailing avec notre logiciel de gestion, cela fonctionne mais lorsque j'insère un champ d'une base de donnée ex : si dans une des lettres de mailing ce champ n'est pas renseigné alors il me la remplace par un blanc lorsque je sort dans un fichier, il laisse le nom du champ si je sort directement sur imprimante Comment fais je pour remplacer la valeur des variables obligatoirement par un blanc sur l'impression. Merci d'avance. Add FUN to your email - CLICK HERE! - To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]
RE: [prog] calcul sur les dates
Bonjour, Déjà, en ce qui concerne ca : [...] pourquoi j'obtiens une erreur pour les 2 premiers jours du mois si j'écris: vDateFin =dateserial (year (vdate)+1, month (vdate), day (vdate)-2) ? [...] C'est "normal", cela revient à demander de calculer la date correspondant au "-1/01/2005" (par exemple) Jean-Claude - To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]
RE: [prog] calcul sur les dates
Rebonjour, [...] Pourquoi suis-je obligé d'enlever 2 jours pour avoir la date correcte à "+ 1 an"? Sans correction, j'obtiens systématiquement comme date à 1 an, la date de début + 1 an et 2 jours (20/06/2005 -> 22/06/2006). [...] Cela provient du type de données utilisé, utiliser un type "Date" prévu à cet effet Jean-Claude Sub Main dim vDate as date dim vDateFin as date vDate = cdatefromiso("2005-06-20") Print vdate vdatefin = dateserial (year (vdate) + 1, month (vdate), day (vdate)) Print vdatefin '20/06/2006 End Sub - To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]
RE: [prog] Ouverture de fichier via macro
Bonjour, je ne sais pas si c'est une faute de copier/coller pour le code, mais moi je mettrais Args(0).Name = "FilterName" Args(0).Value = "Text - txt - csv (StarCalc)" Args(1).Name = "FilterOptions" Args(1).Value = "9/44,39,STANDARD,1,1/1/2/1/3/1" ;-)) tel que tu nous l'as transmis, tu restes sur le paramètre "0" (Args(0) partout) Jean-Claude [...] dim Args(0) as new com.sun.star.beans.PropertyValue Args(0).Name = "FilterName" Args(0).Value = "Text - txt - csv (StarCalc)" Args(0).Name = "FilterOptions" Args(0).Value = "9/44,39,STANDARD,1,1/1/2/1/3/1" oDoc = StarDesktop.LoadComponentFromURL(ConvertToURL(CheminSource + "Fichier.csv"),"_blank",0,Args()) [...] - To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]
RE: [prog] Aide sur fonction CalcSQL2
Bonjour, Il manque un ";" entre "CelluleCible" et "Source de Données". CalqSQL2 attend 4 paramètres. Tu n'as pas tort dans le sens où ce ";" manque dans la documentation (cela doit être la souris qui a fourché ;-) Jean-Claude [...] =CALCSQL2("NomFeuille";""CelluleCible""SourceDeDonnees";"select * from LaTable where LeChamp=" & QUOTE(A14)) [...] - To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]
RE: [prog] Aide sur fonction CalcSQL2
ReBonjour, Il me semble - à la lecture du code (com.sun.star.sheet.DataImportMode.SQL) - que le 4ème paramètre doit être du code SQL (SELECT FROM... ) et pas le nom d'une requête (RQ1). Ce qui donnerait : =CALCSQL2("feuille3";"D7";"ESSAI";"SELECT * FROM RQ1") Jean-Claude [...] =CALCSQL2("feuille3";"D7";"ESSAI";"RQ1") [...] - To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]
RE: [prog] question sur copier/coller dans Calc
Bonjour, as tu essayé sans le "hidden" pour voir si le comportement est identique ? Jean-Claude [...] Args(0).Name = "Hidden" Args(0).Value = true [...] - To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]
RE: [prog] Aide sur fonction CalcSQL2
1) Tu as des problèmes de conflits dans les quotes utilisées dans la requête SQL? 2) Tu ne dois pas pouvoir utiliser "N" paramètres 3) Il faut que Stat soit une table (ou au moins une requête enregistrée) Je remplacerais donc : [...] SELECT "IMDEC", "IMVIS", "EXDEC", "EXVIS" FROM "STAT" "STAT" [...] Par : SELECT IMDEC, IMVIS, EXDEC, EXVIS FROM STAT et donc la formule devient : =calcsql2("Feuille3";"D7";"ESSAI";"SELECT imdec, imvis, exdec, exvis FROM stat") Jean-Claude - To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]
RE: [prog] Aide sur fonction CalcSQL2
Si il te dit qu'il y a des cellules protégées, c'est qu'il doit y avoir des cellules protégées... ;- Refais l'essai avec la formule sur un classeur tout neuf, sans protection. Ne mets pas la cellule de ta formule à l'intérieur de ta zone de destination. Jean-Claude - To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]
RE: [prog] Retour sur fonction CalcSQL2
Je n'ai jamais utilisé CalSQL... mais, Au démarrage du classeur, tu peux affecter une procédure (sans paramètres), mais tu ne peux pas affecter une "fonction" avec des paramètres (ces paramètres seront forcément manquants à l'appel ==> "L'argument n'est pas facultatif", et le résultat de la fonction, Ooo va le mettre où ???) Essayes d'effacer la zone de destination avant de relancer le calcul de la feuille. Jean-Claude [...] J'ai essayé en assignant la fonction au démarrage du document mais cela me renvoi une erreur dans le module Basic, Runtime Error Basic L'argument n'est pas facultatif à ce niveau dans le code: NomSource=Trim(NomSource) [...] - To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]
RE: [prog] Retour sur fonction CalcSQL2
Bonjour, Il n'y a pas de paramètre supplémentaire à ajouter. Il te faut simplement - dans le gestionnaire de souirces de données - reparamétrer "l'URL de la source de données", et la faire pointer sur ton classeur réseau en le sélectionnant dans l'explorateur, de la même manière que pour un classeur local. J'ean-Claude [...] Tout aller trés bien jusqu'à ce que j'essai d'utiliser mes fichiers en réseau depuis un autre poste. Maintenant dans la case j'ai "source de données inconnue", alors que cela marche trés bien sur mon pc où sont implantés les fichiers. [...] - To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]
RE: [prog] Retour sur fonction CalcSQL2
1) Oui, dans le 1er onglet 2) Sur tous les PC, la source de données doit être définie (à la main ou par macro, mais c'est une autre histoire... pas du tout compliquée, mais plus longue à expliquer ), le nom de la source de données doit être absolument identique (orthographe et casse identiques). Si ce n'est pas le cas, pour que ton classeur fonctionne il va falloir adpater la formule du classeur sur chaque PC pour la mettre en rapport avec le nom exact de la source de données sur ce PC (ce qui revient au même, mais en plus compliqué et moins cohérent ;- 3) Je n'ai pas bien saisi l'utilisation de l'onglet "Liens", mais tu n'en as à priori pas besoin Je joint quand même ci dessous un exemple de code qui crée - si besoin - une source de données avec pour nom le contenu de la variable globale NomSource (Ex : "MaSource"), et le classeur situé - sur un réseau - à l'endroit URLSource (Ex : "sdbc:calc:file:///J:/AEH/JCD/Sauvegardes/Toto.sxw"). Cette fonction peut être appelé à l'ouverture du classeur et ainsi créer automatiquement la source si elle n'est pas présente. Jean-Claude [...] Tu parles de reparametrer l'URL de la source de donnée, je suppose que c'est dans le premier onglet du gestionnaire. J'ai donc depuis un autre poste était cherché la source de données mais pour que cela soit pris en compte, il faut que je la déclare comme nouvelle source de données sur le poste ou je suis avec le même nom que sur le poste d'origine pour que le requête soit comprise. Où alors faut-il également faire un lien dans le dernier onglet du gestionnaire de source de données [...] Function Creation_Source_De_Donnees() As Boolean dim oContext as object dim oSource as object dim Reponse as string On Error Goto ErrorHandler oContext = createUnoService("com.sun.star.sdb.DatabaseContext") 'Test si la source de données existe Reponse = oContext.hasByName(NomSource) If Reponse = False Then 'Création de la source de données oSource = oContext.createInstance oContext.registerObject(NomSource, oSource) oSource.URL = URLSOurce End If Creation_Source_De_Donnees = True Goto Exit_Here Exit_False: Exit Function Exit_Here: Exit Function ErrorHandler: MsgBox "Creation_Source_De_Donnees Erreur " & Err & " : " & Error$ & " (Ligne N°" & Erl & ")", sbCritical + sbOkOnly, Titre_Appli On Error Goto 0 Goto Exit_False End Function - To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]
RE: [prog] Filtre sur les tables d'une base de données ?
Bonjour, [...] Je souhaite maintenant filtrer à l'affichage la liste des tables de cette même base. [...] Ci joint extrait de code qui filtre un formulaire : 'Définition du Filtre en SQL strSQL = "commu = " & CLNG(sCommune) & " AND annee_permis = " & CLNG(sAnnee) & " AND no_permis LIKE '" & sPermis & "'" 'Accès au formulaire oForm = ThisComponent.DrawPage.Forms.GetByName("Saisie_totale") 'Affecte le filtre au formulaire oForm.Filter = strSQL 'Recharge le formulaire avec les nouvelles données oForm.Reload C'est tout Jean-Claude - To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]
RE: [prog] Retour sur fonction CalcSQL2
Bonjour, La source URL est une chaine de caractères ==> il faut donc l'encadrer par des cotes : "" oSource.URL = "sdbc:calc:file:///001poste2/partage document/TRAFIC/Banale_2005/TDB/NUM1.sxc" 'URLSOurce au lieu de : oSource.URL = sdbc:calc:file:///001poste2/partage document/TRAFIC/Banale_2005/TDB/NUM1.sxc 'URLSOurce Jean-Claude - To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]
RE: [prog] Retour sur fonction CalcSQL2
Bonjour, Dans le code exemples ci joint, il faut remplacer "MaSource" par le nom de ta source de données (elle s'appelait "ESSAI" au début dans tes codes exemples), ce qui donne alors : Reponse = oContext.hasByName("ESSAI") Jean-Claude [...] le probléme c'est que j'ai le message "source de données inconnue" [...] Reponse = oContext.hasByName("MaSource") [...] - To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]
RE: [prog] boite de dialogue
Bonjour, [...] Avec excel, j'avais la possibilité de remplir les champs de la boite de dialogue dés que je l'appelais avec les anciennes données inscrites dans les cellules sur la feuille excel ainsi l'utilisateur ne modifait qu'une ou deux données et validait. Hors avec Open office je n'arrive pas a faire la meme chose. est que c'est possible ou pas ? [...] Oui [...] et si oui comment ? [...] Comme ça, Sub Main Dim oForm As Object 'Sur la 1ère feuille, accès au 1er formulaire (on peut le faire également par les noms de feuille et formulaires) oForm = ThisComponent.Sheets.GetByIndex(0).DrawPage.Forms.GetByIndex(0) 'Accès au texte du controle nommé "MaTextBox" (on peut également le faire par le N° de controle) oForm.getByName("MaTextBox").Text = "Toto" End Sub Voili, voila Jean-Claude - To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]
[prog] Boite de dialogue
Bonjour, A la relecture de ton message (et du mien), je crains d'avoir fait un léger "hors sujet" ;- Mon code correspond au remplissage d'une textbox d'un formulaire. Pour une boite de dialogue, c'est quasiment la même chose (code ci dessous) Bon courage, Jean-Claude Sub Test Dim oDialog As Variant 'Boite de dialogue de choix du fichier 'Crée la Boite de dialogue oDialog = createUnoDialog(DialogLibraries.Standard._DlgSelFicXL) 'Modifie le texte du controle nommé "FileCtrl" oDialog.Model.FileCtrl.Text = "Toto" 'Affiche la Boite de dialogue oDialog.execute 'Referme la Boite de Dialogue oDialog.endExecute() End Sub - To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]
Re: [prog] Boite de dialogue
Bonjour, La même macro, mais qui fonctione ;-))) Attention, je crois que ton problème se situe au niveau des "Bibliothèques et Modules" : un classeur contient des bibliothèques (library), qui elles mêmes contiennent des modules VB, qui contiennent des macros. Dans ton code, il est indiqué qu'il y a une bibliothèque "Standard" et une bibliothèque "Dialogue". Cette bibliothèque "dialogue" contiend un module (onglet) boite de dialogue nomé "Dialogue1" Dans mon 2ème code, je suppose (ce qui est je crois le cas le plus fréquent, et - il me semble - le plus pratique) que le module de code et le module de boite de dialogue sont dans la même bibliothèque "Standard". Bon courage, Jean-Claude sub essaie Dim MonDocument As Object, LesFeuilles As Object, UneFeuille As Object, MaCellule As Object Dim oBoiteDialogue As Object,ExitOk AS integer Dim ChampDirection AS Object Dim Direction As String monDocument = thisComponent LesFeuilles = MonDocument.Sheets UneFeuille = LesFeuilles.getByName("Feuille1") MonDocument.currentController.activeSheet = uneFeuille exitOK = com.sun.star.ui.dialogs.ExecutableDialogResults.OK DialogLibraries.LoadLibrary("Dialogue") oBoiteDialogue = CreateUnoDialog( DialogLibraries.Dialogue.Dialog1) oBoiteDialogue.Model.TextField1.Text = "Toto" if oBoiteDialogue.Execute = exitOK then ' récupération des données ChampDirection=oBoiteDialogue.GetControl("TextField1") Direction=ChampDirection.Text MaCellule=UneFeuille.getCellRangeByName("A1") MaCellule.string = (direction) end if End Sub Code en mettant les 2 modules (code et Boite de dialogue dans la même bibliothèque) sub essaie Dim MonDocument As Object, LesFeuilles As Object, UneFeuille As Object, MaCellule As Object Dim oBoiteDialogue As Object,ExitOk AS integer Dim ChampDirection AS Object Dim Direction As String monDocument = thisComponent LesFeuilles = MonDocument.Sheets UneFeuille = LesFeuilles.getByName("Feuille1") MonDocument.currentController.activeSheet = uneFeuille exitOK = com.sun.star.ui.dialogs.ExecutableDialogResults.OK oBoiteDialogue = CreateUnoDialog( DialogLibraries.Standard.Dialogue) oBoiteDialogue.Model.TextField1.Text = "Toto" if oBoiteDialogue.Execute = exitOK then ' récupération des données ChampDirection=oBoiteDialogue.GetControl("TextField1") Direction=ChampDirection.Text MaCellule=UneFeuille.getCellRangeByName("A1") MaCellule.string = (direction) end if End Sub - To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]
Re: [prog] execution d'une macro
En groupe on est surement moins c... ;-))) Je m'étais posé la même question, mais j'avais trouvé à l'époque un autre biais. Peux tu m'indiquer où dans la doc tu as trouvé ta réponse, et comment tu procédes. Peut être également que l'on ne se pose pas exactement le même problème à résoudre. D'avance, merci. Jean-Claude Oouuups, je me réponds vite avant de recevoir RTFM ;-) je viens de trouver la réponse dans la doc d'openoffice, il faut passer par une fonction. le rouge de la honte, Gérard :-[ - To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]
[prog] Problème d'assignation
Bonjour, Voici une macro qui sert à afficher une boite de dialogue contenant un message. Sub Message Dim oDlgMessage As Object oDlgMessage = CreateUnoDialog(DialogLibraries.Standard.DLG_Message ) oDlgMessage.execute() oDlgMessage.dispose() End Sub Exécutée seule, cette macro fonctionne. Mais assignée à l'ouverture d'un document, elle génère l'erreur suivante : "Action non supportée. Appel de procédure incorrect. " Que faire pour obtenir l'effet recherché à l'ouverture du document ? Merci par avance. Cordialement. Jean-Claude N'DOUNGA
Re: [prog] Problème d'assignation
Problème résolu. Merci. Jean-Claude - Original Message - From: "Christine Brou" <[EMAIL PROTECTED]> To: Sent: Tuesday, October 03, 2006 5:54 AM Subject: Re: [prog] Problème d'assignation Sub Message Dim oDlgMessage As Object DialogLibraries.LoadLibrary("Standard") ' charger la bibliothèque contenant le Dialog oDlgMessage = CreateUnoDialog(DialogLibraries.Standard.DLG_Message ) oDlgMessage.execute() oDlgMessage.dispose() End Sub Christine - To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]
[prog] Ajout d'un Numberformat en 2.0
Bonjour, J'ai développé une appli en 1.1 au printemps 2004 (je n'ai plus refait de StarBasic depuis), et aujourd'hui je regarde la migration en 2.02.rc4 et je tombe sur la 1ère erreur ;-) Soit... après quelques essais divers infructeux, je reprends une macro exemple originale qui va bien (généralement) sur l'ajout de formats de nombres, d'Andrew PITONYAK, et o stupeur elle bugue egalement ;-( Je l'exécute en 1.1.5, elle fonctionne correctement. Bon, j'ai fait un pas en avant, ce n'est pas que mon code qui lève l'erreur mais également celui d'Andrew ;-) ça reconforte, mais cela ne me fait pas beaucoup progresser... L'erreur est une com.sun.star.uno.RuntimeException sur la ligne addNew à la fin de la macro Ais je loupé des choses sur l'évolution de la programmation en 2.0 ? Qulequ'un a t'il une piste à explorer ? D'avance merci JCD Sub Test Dim i as Integer i = FindCreateNumberFormatStyle( "# ##0", ThisComponent) MsgBox "i = '" & i & "'", sbOkOnly, Titre_Appli End Sub 'Author: Andrew Pitonyak 'email: [EMAIL PROTECTED] Function FindCreateNumberFormatStyle ( sFormat As String, Optional doc, Optional locale) Dim oDocument As Object Dim aLocale As New com.sun.star.lang.Locale Dim oFormats As Object Dim formatNum As Long oDocument = IIf(IsMissing(doc), ThisComponent, doc) oFormats = oDocument.getNumberFormats() 'If you choose to query on types, you need to use the type 'com.sun.star.util.NumberFormat.DATE 'I could set the locale from values stored at 'http://www.ics.uci.edu/pub/ietf/http/related/iso639.txt 'http://www.chemie.fu-berlin.de/diverse/doc/ISO_3166.html 'I use a NULL locale and let it use what ever it likes. 'First, see if the number format exists If ( Not IsMissing(locale)) Then aLocale = locale End If formatNum = oFormats.queryKey (sFormat, aLocale, TRUE) MsgBox "Current Format number is " & formatNum 'If the number format does not exist then add it If (formatNum = -1) Then formatNum = oFormats.addNew(sFormat, aLocale) If (formatNum = -1) Then formatNum = 0 MsgBox "New Format number is " & formatNum End If FindCreateNumberFormatStyle = formatNum End Function - To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]
RE: [prog] Ajout d'un Numberformat en 2.0
Bon, je fais avancer mon Shmilblick... En fait il apparait que c'est avec le getByKey que j'ai des problèmes. Vous pouvez essayer le code ci dessous, qui indique que '# ##0' est différent de '# ##0' !!!???... ;- S1 est codé en dur comme '# ##0', S2 est affecté par le 3ème format de la liste qui est égal à '# ##0'. Le test avec S1 ne fonctionne pas, celui avec S2 fonctionne. Une idée ? JCD Sub Test Dim i as Integer Dim NLS As New com.sun.star.lang.Locale dim s1 as String dim s2 as String dim oFormats as Object dim oFormat as Object s1 = "# ##0" oFormats = ThisComponent.getNumberFormats() oFormat = oFormats.getByKey(3) s2 = oFormat.FormatString() if (s1 <> s2) then MsgBox "s1 <> s2 (S1 = '" & s1 & "', s2 = '" & s2 & "')", sbOkOnly, Titre_Appli MsgBox "oFormat.FormatString = " & oFormat.FormatString MsgBox "oFormat.Locale.Language = " & oFormat.Locale.Language MsgBox "oFormat.Locale.Country = " & oFormat.Locale.Country MsgBox "oFormat.Locale.Variant = " & oFormat.Locale.Variant MsgBox "oFormat.Type = " & oFormat.Type '16 ==> Type = "NUMBER" MsgBox "oFormat.Comment = " & oFormat.Comment else MsgBox "s1 = s2 (S1 = '" & s1 & "', s2 = '" & s2 & "')" end if 'Test 1 with s2 i = oFormats.queryKey ( s2, NLS, TRUE) MsgBox "With s2, i = '" & i & "'" 'Test with s1 NLS.Language = "fr" NLS.Country = "FR" i = oFormats.queryKey ( s1, NLS, TRUE) MsgBox "With s1, i = '" & i & "'" 'Test 2 with s2 (with NLS Specified) i = oFormats.queryKey ( s2, NLS, TRUE) MsgBox "With s2, i = '" & i & "'" End Sub - To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]
RE: [prog] Ajout d'un Numberformat en 2.0
Argh, merci beaucoup. J'en étais rendu à me préparer une boucle pour afficher le code ascii caractère par caractère de la chaîne... ;-)) Bon, ben j'ai quand même perdu pas mal de temps avec ce p de séparateur de milliers qui a donc changé en la V.1 et la V2. A tous les deux on arrivera peut être à faire une perruque avec le tas au pied du bureau ;-D JCD - To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]
RE: [prog] impossible de faire un update dans base via macro
Bonjour, A) Vous utilisez une Boite de dialogue ou un formulaire ? B) En ce qui me concerne, j'avais fait une application de saisie avec formulaire en Ooo V1.1 et je faisais simplement un UpdateRow sur ma référence au formulaire de saisie oForm, ce qui provoquait la mise à jour de la BdD : oForm = ThisComponent.DrawPage.Forms.GetByName("Saisie_totale") oForm.UpdateRow C) Sinon, il y a toujours la possibilité d'envoyer une requête UPDATE directement à la BdD Jean-Claude DAVID - To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]
RE: [prog] impossible de faire un update dans base via macro
Une Base de Données ne verrouille pas un enregistrement si on ne lui demande pas explicitement. Si c'est une boite de dialogue remplie par une requête SELECT, cette requête ne peut pas mettre à jour la BdD. Pour ma part, pour chaque ligne, je ferais quelque chose du type (je n'ai pas vérifié la syntaxe) : strSQL = "UPDATE signataires SET " & resuQuery.columns(0).Name & " = " & tabSignataires(monrow, 0) & ", " & resuQuery.columns(1).Name & " = " & tabSignataires(monrow, 1) & ... & " WHERE ID_signataires = " & ID_signataires 'Création de la requête oStatement = oCon.CreateStatement() 'Exécution de la requête Retour = oStatement.executeUpdate(strSQL) Envoye ton fichier en M.P. si tu souhaites que j'y jette un coup d'oeil. Jean-Claude DAVID - To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]
RE: [prog] impossible de faire un update dans base via macro - s uite
Dans la documentation de l'interface "XStatement" (que retourne ExecuteQuery) il est précisé : "is used for executing a static SQL statement", on serait donc sur un ResultSet statique et pas dynamique. A mon avis, il faut donc passer par des Update pour effectuer des mises à jour. Ou alors il faut utiliser un "XResultSetUpdate" qui lui "provides the possiblity to write changes made on a result set back to database." par un UpdateRow Jean-Claude - To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]
RE: [prog] PB mise à jour de base de do nnée BASE
En mode saisie, est-ce que les modifications sont bien prises en compte, même si Ooo est fermé puis réouvert ? Jean-Claude - To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]
RE: [prog] Base HSQL, ordre des champs dans une table
>Maintenant je veux modifier sa structure en rajoutant un >champs que je veux placer en première position dans la liste des champs. >En Utilisant les fonctionnalités de Base, je n'y arrive pas. Dans le fichier Base de Données, sélectionner dans la liste des Tables la table souhaitée, clic droit : "Modifier". Sélectionner la ligne d'un champ de la table, clic droit : "Insérer". Le champ est inséré en dernier, mais ceci n'a aucune importance. L'ordre des champs dans une table n'implique en aucun cas celui d'affichage dans un formulaire de saisie ou dans une requête. >Avec une requête SQL, il semble que le insert into ne fonctionne pas non >plus. Le "Insert Into" ne peut insérer que des données dans une table, pas des champs. Jean-Claude - To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]