Formulaire de demande d'aide

Bonjour

Voici une nouvelle question envoyée à l'aide du formulaire de demande d'aide (http://fr.libreoffice.org/assistance/).
Si vous répondez, merci de penser à utiliser la fonction "répondre à tous" de votre logiciel de courrier électronique de façon que le demandeur reçoive une copie de votre réponse.

De la part de : -
- eliotnaiss@outlook.com

Texte de la question : -
- Bonjour, en parcourant mon fichier ici (http://cjoint.com/?3DkuSObXtIS) qui est sous excel, est-il possible de convertir la seule macro s'y trouvant, qui est déclenchée avec choix dans une liste ?
La voici :

Private Sub Worksheet_Change(ByVal Target As Range)
Dim Rg As Range, X As Long, Z As Variant
Set Rg = Intersect([TABLO], Target)
If Not Rg Is Nothing Then
    For Each c In Rg
        X = Application.CountIf(Range("TABLO"), CLng(Target))
        If X = 7 Then
            With Feuil1.Range("Dispo")
                Z = Application.Match(Target, .Cells, 0)
                If IsNumeric(Z) Then
                    Application.EnableEvents = False
                    rep = MsgBox("Désolé mais cette date n'est plus disponible." & _
                        vbvrlf + vbCrLf & "Positionnez-vous sur une autre session.", vbOKOnly, "Gestion des places en formation")
                       c.Select
                        c.Value = ""
                        SendKeys "%{Down}"
                    Application.EnableEvents = True
                Else
                    Err.Clear
                End If
            End With
        End If
    Next
End If
End Sub

Je dois convertir "rapidos" ce fichier vers LibreOffice car on nous supprime Office de Microsoft !!!
Merci d'avance.
Cordialement

Je ne voudrais pas être désagréable mais une macro qui définit trois variables nommées rg, x et z et qui teste x = 7 ne mérite pas d'être convertie.

Bonjour

rafi wrote

Je ne voudrais pas être désagréable...

Moi non plus :slight_smile:

Mais je ne comprends pas ceci :

rafi wrote

...mais une macro qui définit trois variables nommées rg, x et z et qui
teste x = 7 ne mérite pas d'être
convertie.

Je ne comprends ni "techniquement" (pourrais-tu préciser ?)

Ni "sur le principe" : aucune obligation sur ces listes. Si tu veux tu fais,
ou tu
aides à faire, ou à corriger, ou tu indiques où trouver de la doc, etc.
Sinon… pourquoi cette réponse ???

Cordialement
Pierre-Yves

Suite..

Oups... message envoyé avant d'être fini... :slight_smile:

Les listes ne laissant pas passer les pièces jointes, je voulais joindre ici
un
exemple de réécriture. Je complète par une réponse à eliotnaiss lui
donnant ce lien...

forum_monplanning.ods
<http://nabble.documentfoundation.org/file/n4105085/forum_monplanning.ods>

Cordialement
Pierre-Yves

Bonjour

Message du 11/04/14 13:24
en parcourant mon fichier ...qui est sous excel, est-il possible
de convertir la seule macro s'y trouvant, qui est déclenchée avec
choix dans une liste ?
Je dois convertir "rapidos" ce fichier vers LibreOffice car on
nous supprime Office de Microsoft

Plusieurs choses me "chiffonnent" dans cette question.

1. Remplacer un logiciel par un autre sans autre forme de procès
(en particulier ici faire le point des macros à convertir et
se donner les moyens pour cela) n'est pas une bonne manière de
procéder.

En ce sens te donner une solution pourrait paraitre ne pas
être un service à te rendre : "vous voyez bien, on peut supprimer
MS, yaka trouver une solution sur le net..."

2. Tu commences par "est-il possible" (ma réponse serait oui)
puis tu continues par "je dois rapidos..."

Le début laisserait entendre que tu attends une solution toute
faite par quelqu'un ; la fin suppose que tu souhaites être aidé...
ce n'est pas la même chose.

Il va de soi que je préfère la seconde hypothèse...

Tu n'indiques pas si c'est toi qui as écrit la macro originelle,
ni si tu as commencé à essayer de la convertir, ce qui te bloquerait,
ni même si tu as commencé à apprendre le langage et l'API de LibreOffice.

Programmer ne s'improvise pas... Alors programmer "rapidos" ...

3. Je ne dispose plus d'Excel, ni ne pratique VBA depuis des années
et ne peux donc tester ta macro. Je fais donc des hypothèses sur ce
qu'elle produit...

4. Sans autre explications que celles fournies (et le classeur)
tout n'est pas limpide dans ce qui est attendu...

5. La fonctionnalité (telle que je l'ai comprise) ne peut être
simplement convertie. Des adaptations sont nécessaires...
Certaines relativement simples à expliquer (par exemple la source
de la plage de validité ne peut être de type date car cela apparait
sous forme numérique alors qu'on veut JJ-MMM).
D'autres sont complexes à expliquer (par exemple gestion différente
entre countif et match dûe à la gestion des noms "dynamiques").

6. Je n'aimerais pas te laisser sans réponse malgré les 5 points
ci-dessus :slight_smile:

Ayant un peu de temps cet après-midi j'ai donc tenté une
adaptation "rapidos" dans le document joint à cet endroit:
(voir le module Standard> Modules> Module1> PysWorksheetChange)
http://nabble.documentfoundation.org/Formulaire-de-demande-d-aide-tp4104921p4105085.html

Nota: le déclenchement de la macro se fait "sur modification" de
la feuille. Ceci se détermine par clic droit sur l'onglet puis
Événements...

Si tu réponds, merci de penser à utiliser la fonction "répondre à tous"
du logiciel de courrier électronique ou du webmail de façon que la liste
reçoive la réponse.

Cordialement
Pierre-Yves

Suite...

Nouvelle version

forum_monplanning.ods
<http://nabble.documentfoundation.org/file/n4105117/forum_monplanning.ods>

Cordialement
Pierre-Yves

Bonjour

Message du 12/04/14 22:49
en ce qui concerne le fichier retourné, c'est super, ...
Le principe voulu était que des personnes choisissent dans
une liste des dates, mais il ne peux y avoir que 6 personnes

Ok. Le doute qui me restait était la recherche dans la plage dispo
avec, si je ne me trompe pas, l'affichage du message si on trouve
alors que, sans connaître, on s'attendrait au contraire...
(raison pour laquelle j'ai mis en commentaire le test inverse au
cas où...).

Par contre (désolé) mais est-il possible qu'en déroulant la liste
dans les cellules, ce soit le premier élément de date qui soit
affiché ?

C'est possible en s'arrangeant pour que la source de la liste ne
comprenne pas d'éléments vides. Il suffit de remplacer par:
DECALER($NOMS.$C$2;0;;EQUIV("";$NOMS.$C$2:$C$100;0)-1)

Voir le fichier :
http://nabble.documentfoundation.org/Formulaire-de-demande-d-aide-tp4104921p4105117.html

C'est d'ailleurs l'occasion de dire que j'ai arbitrairement
limité à 100 lignes les formules dans cette colonne et donc
comme source de la liste. Dans ton classeur les calculs
(noms dynamiques) sont faits sur la colonne entière.
Un million de lignes c'est, disons... beaucoup, peut-être
trop ?
Quoiqu'il en soit, il faudra sans doute adapter cette valeur.

si tu as des conseils à me donner pour apprendre correctement,
je suis preneur.

L'outil Xray te deviendra vite indispensable (qui permet notamment
d'obtenir la liste des propriétés, méthodes, services, interfaces
d'un objet en cours de programme). Cet outil, ainsi que d'autres
ressources est référencé sur cette page de notre wiki :
https://wiki.documentfoundation.org/Macros/fr

Si tu réponds, merci de penser à utiliser la fonction "répondre à tous"
du logiciel de courrier électronique ou du webmail de façon que la liste
reçoive la réponse.

Cordialement
Pierre-Yves

Bonjour et merci, les conseils sont entendus !
Pour les 100 lignes, je viens d'adapter la valeur, en effet pourquoi chercher dans toute la colonne alors que seule un vingtaine de cellules est concernée !!
Je vais aller sur le wiki pour voir cet outil Xray.
Encore merci à tous, par ton intermédiaire, pour l'aide.
Cordialement.
Eliot

Bonjour Pierre-Yves, et les autres :wink:
Désolé des termes que j'ai employé, et encore désolé de te chiffonner...
En effet, au boulot on nous supprime nos licences Microsoft (pas le choix), et comme tu as du le comprendre je programme en VBA depuis
quelques années et j'ai développé quelques appli, modestes, mais qui rendent bien des services. Sans en tenir compte, on passe sous LibreOffice. Pour ou contre, ce ne sera pas le sujet (même si je trouve LibreOffice pas si mal).
Pour la solution, que je te remercie de m'avoir donnée, j'ai demandé un coup de main "rapidos" afin de faire un parallèle entre les deux codes.
Le code VBA n'est pas de moi, mais de MichD, à ma demande.
Je suis en plein apprentissage, je pioche ca et là des infos, et dans "Programmation OpenOffice.org 3 Macros OOoBASIC et API" de chez Eyrolles. J'avoue que quitter le VBA n'est pas facile, du moins pour moi, je n'ai pas (plus) l'esprit aussi vif qu'un jeunot, avec mes 53 balais...
Bon, en ce qui concerne le fichier retourné, c'est super, exactement ce que j'aurai aimé faire moi-même ... Le principe voulu était que des personnes choisissent dans une liste des dates, mais il ne peux y avoir que 6 personnes pour un même date.
Par contre (désolé) mais est-il possible qu'en déroulant la liste dans les cellules, ce soit le premier élément de date qui soit affiché ?
Pour finir, en attendant ta réponse, si tu as des conseils à me donner pour apprendre correctement, je suis preneur.
Merci à la liste d'avoir lu mon appel et de m'avoir répondu.
Bien cordialement.
Eliot