#1 Le 18/09/2024, à 17:09
- claudius723
Message erreur sur variable en zBasic
Bonjour, après avoir réinstallé Ubuntu, j'ai un message d'erreur dans ma macro (en zBasic), "Erreur d'exécution BASIC '12' Variable non définie. Informations supplémentaire : oPlageCopie; Avant la réinstallation, tout fonctionnait parfaitement, est ce que je dois revenir à une version précédente ?
Sub EnregistrerSaisieAdherents
GlobalScope.BasicLibraries.loadLibrary("zBasic")
zFeuille.Active= "Interface"
oPlageCopie = "A4:S4"
oTableDepart= zPlage.VersTable(oPlageCopie)
oTableArrive = zTable.SansLigneVide(oTableDepart)
oPlageColle = "A2:S124"
nLigne = zPlage.LigneVide("Adherents-2025", oPlageColle)
zTable.Ecrit("Adherents-2025", "A" & nLigne, oTableArrive)
Call TriAdherents
Cordialement
Claudius723
Hors ligne
#2 Le 27/09/2024, à 07:56
- claudius723
Re : Message erreur sur variable en zBasic
Bonjour, je reviens vers vous pour trouver quelqu'un qui connaît zBasic et me dépanner, ou me faire une macro de remplacement en Basic, je suis le trésorier d'une association et toute ma gestion des adhérents fonctionne sous calc avec des macros en zBasic sauf depuis quelques temps, celle qui enregistre les adhérents ne veut plus fonctionner.
Je joints la récalcitrante en question
Sub EnregistrerSaisieAdherents
GlobalScope.BasicLibraries.loadLibrary("zBasic")
Dim sFeuille as variant
Dim sPlage as variant
sFeuille = "Copies"
sPlage = "A4:S4"
oTableDepart = zPlage.VersTable(sPlage, sFeuille)
oTableArrive = zTable.SansLigneVide(oTableDepart)
oPlageColle = "A2:S124"
nLigne = zPlage.LigneVide( "FAdherents2025" , oPlageColle)
zTable.Ecrit( "FAdherents2025", "A" & nLigne, oTableArrive)
End sub
Cordialement
Claudius723
Hors ligne
#3 Le 27/09/2024, à 09:45
- Rafbor
Re : Message erreur sur variable en zBasic
Bonjour,
tu pourrais partager un fichier de test (avec des données anonymes) ?
et expliquer ce que doit faire la macro, je ne connais pas le zBasic.
Xubuntu 22.04 - Mes projets sur Github
En ligne
#4 Le 27/09/2024, à 14:22
- claudius723
Re : Message erreur sur variable en zBasic
Je vais essayer de joindre un fichier.
La macro que je voudrais est simple, mais moi en Basic , je n'y connais rien !!
Depuis le menu "Saisie Adhérents", à l'aide de la feuille "Données", je remplie "Interface" et je demande de copier ces données dans la feuille"Adherents à la première ligne vide trouvée. Après je fais un tri, en zBasic qui fonctionne.
Modèle de macro en zBasic :
Sub EnregistrerSaisieAdherents
GlobalScope.BasicLibraries.loadLibrary("zBasic")
sFeuille = "Interface"
sPlage = "A4:D4"
oTableDepart = zPlage.VersTable(sPlage, sFeuille)
oTableArrive = zTable.SansLigneVide(oTableDepart)
oPlageColle = "A2:D4"
nLigne = zPlage.LigneVide( "Adherents" , oPlageColle)
zTable.Ecrit( "Adherents", "A" & nLigne, oTableArrive)
End sub
Question, comment fait on pour joindre un fichier ?
Cordialement
Claudius723
Hors ligne
#5 Le 27/09/2024, à 15:39
- Rafbor
Re : Message erreur sur variable en zBasic
Utilise un site de partage de fichiers comme filemail (choisir: envoyer en tant que lien)
Xubuntu 22.04 - Mes projets sur Github
En ligne
#6 Le 27/09/2024, à 16:48
- claudius723
Re : Message erreur sur variable en zBasic
https://fromsmash.com/NfGBDytc.H-ct
Je ne sais pas si cela va marcher !
Cordialement
Claudius723
Hors ligne
#7 Le 27/09/2024, à 17:26
- Rafbor
Re : Message erreur sur variable en zBasic
J'ai récupéré le fichier.
C'est pas très bien conçu, la clé de recherche dans la 1ère feuille ne devrait pas être une chaîne comme "Mme BRUNETTE Annick" mais plutôt un Id.
Le formulaire "Saisie" ne permet pas de créer un nouvel adhérent, mais seulement de le récupérer à partir de la feuille "Donnees".
J’imagine que tu t'en sers pour créer la liste des nouveaux adhérents de la saison.
Si je comprends bien, dans la feuille "Saisie" tu choisis à partir de la liste déroulante un des adhérents présents dans la feuille "Donnees" et ça le copie dans la feuille "Interface". Puis tu cliques le bouton "Saisie adherents" et ça copie les données de l'adhérent depuis la feuille "Interface" dans la feuille "Adherents" à la 1ère ligne vide et ça trie le tableau.
Je ne comprends pas l'utilité de la feuille "Interface" et il n'y a pas de contrôle sur un adhérent déjà existant. On peut faire la copie sans passer par la feuille "Interface".
Je vais essayer de faire une macro.
Xubuntu 22.04 - Mes projets sur Github
En ligne
#8 Le 27/09/2024, à 18:58
- claudius723
Re : Message erreur sur variable en zBasic
Tu as parfaitement compris, en fait je récupère l'adhérent de l'année passée, s'il continue à cotiser. Je peux aussi saisir un nouvel adhérent par un autre formulaire. C'est vrai que si on peut se passer de l'interface, ce sera formidable, car tu imagine bien que ce n'est pas la seule manipulation que j'ai à faire. Bon courage.
Cordialement
Claudius723
Hors ligne
#9 Le 27/09/2024, à 21:23
- Rafbor
Re : Message erreur sur variable en zBasic
Voilà les macros. Plus besoin de la feuille "Interface".
Rien n'est ajouté si l'adhérent existe déjà. Le tableau est trié à la fin.
Dans Module1, efface tout puis copie ceci:
REM ***** BASIC *****
option Explicit
Sub EnregistrerSaisieAdherents
dim oSheetS, oSheetD, oCell as Object
dim nRowS, nColS, nRowD, nColD as Long
Dim sNomPrenom As string
'source
oSheetS = ThisComponent.CurrentController.ActiveSheet
nRowS = 4 ' ligne 5
nColS = 5 'colonne F
'destination
oSheetD = ThisComponent.Sheets.getByName("Adherents")
nRowD = 1 'ligne 2
nColD = 0 'colonne A
'cherche si adhérent existe déjà
While oSheetD.GetCellByPosition(nColD, nRowD).String <> ""
If oSheetD.GetCellByPosition(nColD, nRowD).String = oSheetS.GetCellByPosition(nColS, nRowS).String Then
Msgbox "Adhérent existe déjà"
exit sub
endif
nRowD = nRowD + 1
Wend
'cherche ligne vide
nRowD = 1 'ligne 2
While oSheetD.GetCellByPosition(nColD, nRowD).String <> ""
nRowD = nRowD + 1
Wend
'recopie Nom prénom
oSheetD.GetCellByPosition(nColD, nRowD).String = oSheetS.GetCellByPosition(nColS, nRowS).String
'recopie Adresse
oSheetD.GetCellByPosition(nColD + 1, nRowD).String = oSheetS.GetCellByPosition(nColS, nRowS + 2).String
'recopie Code postal
oSheetD.GetCellByPosition(nColD + 2, nRowD).String = oSheetS.GetCellByPosition(nColS, nRowS + 4).String
'recopie Statut
oSheetD.GetCellByPosition(nColD + 3, nRowD).String = oSheetS.GetCellByPosition(nColS, nRowS + 6).String
'fin
Msgbox "Adhérent ajouté"
'tri
Tri(nRowD + 1)
End sub
Sub Tri(nRowD As long)
Dim oSheet
Dim oRange
Dim oSortFields(0) as new com.sun.star.util.SortField
Dim oSortDesc(0) as new com.sun.star.beans.PropertyValue
oSheet = ThisComponent.Sheets.getByName("Adherents")
REM Plage à trier
oRange = oSheet.getCellRangeByName("A2:D"& nRowD)
REM Tri par la colonne
oSortFields(0).Field = 0 ' 1ère colonne de la plage
oSortFields(0).SortAscending = True
REM Description du tri
oSortDesc(0).Name = "SortFields"
oSortDesc(0).Value = oSortFields()
REM Effectuer le tri
oRange.Sort(oSortDesc())
End Sub
Xubuntu 22.04 - Mes projets sur Github
En ligne
#10 Le 28/09/2024, à 08:56
- claudius723
Re : Message erreur sur variable en zBasic
Bonjour Rabfor, ton travail est magnifique, il faut maintenant que j'adapte ces macros à mon application, j'ai 3 formulaires de saisie dans le même genre, avec plusieurs lignes et 2 colonnes, et un formulaire pour un nouvel adherent.
SaisieAdherents2025, 19 cellules sur 2 colonnes
SaisieCarnets (Tombola) , 14 cellules, sur 2 colonnes
SaisieLots (Tombola), 16 cellules, 2 colonnes
SaisieNouvelAdherent, 21 cellules, 2 colonnes
Je dois effacer les données à la fin de l'enregistrement, pour une nouvelle saisie, après le tri.
Je peux aussi compléter s'il manque des données, souvent des n° de Tél.
Où j'interviens pour ces adaptations ?
Je joins une copie du formulaire "SaisieAdherents2025"
https://fromsmash.com/HMkG.Bz5sf-ct
Cordialement
Claudius723
Hors ligne
#11 Le 28/09/2024, à 11:29
- Rafbor
Re : Message erreur sur variable en zBasic
Il faut adapter le début de la macro pour renseigner la source et la destination, avec les bonnes lignes et colonnes (regarde les commentaires)
Et ensuite, je comprends pas bien, il manque le fichier SAV-2025 et la macro d'enregistrement est absente... tu récupères les adhérents existants sur la feuille 2024 de ce fichier, et tu mets à jour dans quoi ?
Pas de saisie de nouveaux adhérents via ce formulaire ?
Xubuntu 22.04 - Mes projets sur Github
En ligne
#12 Le 28/09/2024, à 18:39
- claudius723
Re : Message erreur sur variable en zBasic
Comme je ne pourrais jamais expliquer comment j'ai construit cette usine à gaz, je préfère t'envoyer le fichier complet, (sans données) comme cela tu auras une idée de ce que je souhaite faire.
Tu vas sûrement trouver des anomalies, et u vas me le dire pour que je corrige, si cela te convient.
Je te souhaite une bonne soirée, ainsi qu'une bonne lecture.
Cordialement
Claudius723
Hors ligne
#13 Le 29/09/2024, à 09:14
- Rafbor
Re : Message erreur sur variable en zBasic
Bon Claudius, comme tu l'as dit, c'est une usine à gaz...
Je vais pas y passer trop de temps alors je vais juste te mettre au point la macro pour la "Saisie Adhérent 2025", dès que j'ai un moment.
A mon avis, vu que zBasic fonctionnait avant ta réinstallation d'Ubuntu, tu devrais demander de l'aide dans le forum OpenOffice/LibreOffice, ils t'ont déjà aidé par le passé, et il y a là-bas le créateur de l'extension zBasic, il pourront te guider pour le faire fonctionner à nouveau.
Xubuntu 22.04 - Mes projets sur Github
En ligne
#14 Le 29/09/2024, à 09:38
- claudius723
Re : Message erreur sur variable en zBasic
Je te remercie d'y consacrer un peu de ton temps, avec la macro Saisie Adhérents je me débrouillerais, pour adapter le reste. Je ne suis plus admis dans le forum OpenOffice, il parait que je posais trop de questions !!
En fait, je ne veux pas être trop désagréable, mais ils ne sont pas très coopératifs, c'est un avis personnel !!
Cordialement
Claudius723
Hors ligne
#15 Le 30/09/2024, à 16:12
- Dude
Re : Message erreur sur variable en zBasic
Je ne suis plus admis dans le forum OpenOffice, il parait que je posais trop de questions !!
Tu as vu ça où que tu n'étais plus admis ?
C'est surtout que tu postes et que tu ne donnes aucune suite quand on te fait des réponses :
https://forum.openoffice.org/fr/forum/v … hp?t=68934
Hors ligne
#16 Le 30/09/2024, à 18:40
- claudius723
Re : Message erreur sur variable en zBasic
Bonjour, c'est sans aucun doute vrai, je viens encore un fois d'essayer de me connecter, mais je n'ai plus de mot de passe , perdu lors d'une réinstallation d'Ubuntu. Alors rien! !, j'ai contacté un administrateur, comme il est conseillé.
Cordialement
Claudius723
Hors ligne
#17 Le 30/09/2024, à 20:28
- Rafbor
Re : Message erreur sur variable en zBasic
Claudius, voici les 2 macros pour la saisie des adhérents 2025, c'est plus compréhensible, tu devrais pouvoir les adapter facilement ailleurs
Sub EnregistrerSaisieAdherents
dim oSheetS, oSheetD, oCell as Object
dim nRowD as Long
Dim sRowD As string
'source
oSheetS = ThisComponent.CurrentController.ActiveSheet
'destination
oSheetD = ThisComponent.Sheets.getByName("Adherents2025")
nRowD = 1 'ligne 2
'cherche si adhérent existe déjà
While oSheetD.GetCellByPosition(0, nRowD).String <> ""
If oSheetD.GetCellByPosition(0, nRowD).String = oSheetS.getCellRangeByName("C5").String Then
Msgbox "Adhérent existe déjà"
exit sub
endif
nRowD = nRowD + 1
Wend
'cherche ligne vide
nRowD = 1 'ligne 2
While oSheetD.GetCellByPosition(0, nRowD).String <> ""
nRowD = nRowD + 1
Wend
sRowD = CStr(nRowD + 1) 'transforme le n° de ligne en chaine, en incrémentant car pour la ligne 1, l'index est 0
'recopie Nom prénom
oSheetD.getCellRangeByName("A" & sRowD).String = oSheetS.getCellRangeByName("C5").String
'recopie Adresse
oSheetD.getCellRangeByName("B" & sRowD).String = oSheetS.getCellRangeByName("C7").String
'recopie Code postal
oSheetD.getCellRangeByName("C" & sRowD).String = oSheetS.getCellRangeByName("C9").String
'recopie Statut
oSheetD.getCellRangeByName("D" & sRowD).String = oSheetS.getCellRangeByName("C11").String
'recopie E-mail
oSheetD.getCellRangeByName("E" & sRowD).String = oSheetS.getCellRangeByName("C13").String
'recopie Tél.fixe
oSheetD.getCellRangeByName("F" & sRowD).String = oSheetS.getCellRangeByName("C15").String
'recopie Tél.port
oSheetD.getCellRangeByName("G" & sRowD).String = oSheetS.getCellRangeByName("C17").String
'recopie Fonction
oSheetD.getCellRangeByName("H" & sRowD).String = oSheetS.getCellRangeByName("C19").String
'recopie Section
oSheetD.getCellRangeByName("I" & sRowD).String = oSheetS.getCellRangeByName("C21").String
'recopie Date naissance
oSheetD.getCellRangeByName("R" & sRowD).String = oSheetS.getCellRangeByName("C23").String
'recopie Age
oSheetD.getCellRangeByName("S" & sRowD).String = oSheetS.getCellRangeByName("C25").String
'recopie Cotisation
oSheetD.getCellRangeByName("J" & sRowD).String = oSheetS.getCellRangeByName("O5").String
'recopie Nombre carnets
oSheetD.getCellRangeByName("K" & sRowD).String = oSheetS.getCellRangeByName("O9").String
'recopie Dons
oSheetD.getCellRangeByName("L" & sRowD).String = oSheetS.getCellRangeByName("O11").String
'recopie Revue
oSheetD.getCellRangeByName("M" & sRowD).String = oSheetS.getCellRangeByName("O14").String
'recopie Total Tombola
oSheetD.getCellRangeByName("N" & sRowD).String = oSheetS.getCellRangeByName("O17").String
'recopie Total général
oSheetD.getCellRangeByName("O" & sRowD).String = oSheetS.getCellRangeByName("O20").String
'recopie Réglement
oSheetD.getCellRangeByName("P" & sRowD).String = oSheetS.getCellRangeByName("O23").String
'recopie Date cotisation
oSheetD.getCellRangeByName("Q" & sRowD).String = oSheetS.getCellRangeByName("O26").String
'tri
Tri("Adherents2025", "A2:S"& sRowD)
Msgbox "Adhérent ajouté"
End sub
Sub Tri(sNomFeuille As string, sPlage As string)
Dim oSheet
Dim oRange
Dim oSortFields(0) as new com.sun.star.util.SortField
Dim oSortDesc(0) as new com.sun.star.beans.PropertyValue
oSheet = ThisComponent.Sheets.getByName(sNomFeuille)
REM Plage à trier
oRange = oSheet.getCellRangeByName(sPlage)
REM Tri par la colonne
oSortFields(0).Field = 0 ' 1ère colonne de la plage
oSortFields(0).SortAscending = True
REM Description du tri
oSortDesc(0).Name = "SortFields"
oSortDesc(0).Value = oSortFields()
REM Effectuer le tri
oRange.Sort(oSortDesc())
End Sub
Dernière modification par Rafbor (Le 01/10/2024, à 07:47)
Xubuntu 22.04 - Mes projets sur Github
En ligne
#18 Le 01/10/2024, à 11:29
- claudius723
Re : Message erreur sur variable en zBasic
Merci pour la macro, je l'ai adaptée à mes formulaires et ça marche super. J'ai encore 2 requêtes à te soumettre, te serait il possible de me faire un filtre sur "Adherents2025", pour récupérer les adhérents qui ont souscrits à la tombola, par exemple sur la colonne 11 et récupérer les données partielles dans la feuille "LiaisonTombola" ?
Autre question, récupérer le résultat "ChercheOccurences" dans la cellule Q16 de la feuille "SaisieLots", après un clic sur le bouton "N° gagnant", de la même feuille.
Je te remercie d'avance, et te souhaite une bonne journée.
Cordialement
Claudius723
Hors ligne
#19 Le 01/10/2024, à 20:26
- Rafbor
Re : Message erreur sur variable en zBasic
Je comprends pas bien ce qu'il faut faire. Je te laisse faire pour le filtre.
Je veux bien regarder pour la macro "ChercheOccurences" que je t'ai écrite dans l'autre sujet, mais rien ne correspond à ce que tu avais expliqué...
Xubuntu 22.04 - Mes projets sur Github
En ligne