Modérateur: Vilains modOOs
Ajout : 16:52 |
Sub RecopierPCTickets
Dim monDocument As Object, lesFeuilles As Object
Dim maFeuille As Object, maCellule As OBject
Dim oCel1 As Object, oCel2 As Object
Dim zoneVide As Variant
Dim maZone As Object
Dim celluleVide As Integer
Dim fDepart As Object, fArriv As Object
Dim zDepart As Object, cArriv As Object
Dim NumeroDepart as Object, NumeroFin as Object
monDocument = thisComponent
lesFeuilles = monDocument.Sheets
'Je désigne la feuille sur laquelle je travaille
maFeuille = ThisComponent.getSheets.getByName("pc_tickets")
'Test avant copie
NumeroDepart = maFeuille.getCellRangeByName("C13")
NumeroFin = maFeuille.getCellRangeByName("C15")
'si cellule C13 vide
If NumeroDepart.Type = com.sun.star.table.CellContentType.EMPTY Then
MsgBox("Vous devez saisir le premier numéro du lot")
Exit sub
' si cellule C15 vide
Elseif NumeroFin.Type = com.sun.star.table.CellContentType.EMPTY Then
MsgBox ("Vous devez saisir le dernier numéro du lot")
Exit Sub
Else ' tout va bien on exécute la macro
fDepart = ThisComponent.Sheets.getByName("pc_tickets")
fArriv = ThisComponent.Sheets.getByName("Tickets")
'Je désigne la feuille sur laquelle je travaille
maFeuille = ThisComponent.getSheets.getByName("Tickets")
'Affiche la feuille correspondante au cas où c'est autre feuille qui est affichée à l'écran (FACULTATIF)
ThisComponent.CurrentController.ActiveSheet = maFeuille
'Je désigne la zone sur laquelle je cherche une ligne vide de la manière suivante
'Colonne A qui est ma colonne de référence.
'Je commence à la ligne A2 (A2 comporte mes titres de mon tableau). donc la recherche commencera à partir de la ligne 3
'Je termine à A500. Il ne faut pas hésiter à aller plus loin si le nombre de lignes
'pouvant étre utiliser est supérieur (exemple: A500)
maZone = maFeuille.getCellRangeByName("A2:A500")
zoneVide = maZone.queryEmptyCells.RangeAddresses
'Je trouve la dernière ligne utilisée
celluleVide = zoneVide(0).StartRow
'J'ajoute 1 pour obtenir la ligne vide
celluleVide = celluleVide + 1
'Je vais à la ligne vide de la colonne A et
' copier dans la Feuille Tickets dans la première ligne vide de la colonne A
' le contenu de la Feuille pc_tickets cellule C9 etc
oCel1 = fDepart.getCellRangeByName("C9")
oCel2 = fArriv.getCellRangeByName("A" & celluleVide)
oCel2.string = oCel1.string ' Texte
oCel1 = fDepart.getCellRangeByName("C11")
oCel2 = fArriv.getCellRangeByName("B" & celluleVide)
oCel2.string = oCel1.string ' Texte
oCel1 = fDepart.getCellRangeByName("C13")
oCel2 = fArriv.getCellRangeByName("C" & celluleVide)
oCel2.string = oCel1.string ' Texte
oCel1 = fDepart.getCellRangeByName("C15")
oCel2 = fArriv.getCellRangeByName("D" & celluleVide)
oCel2.string = oCel1.string ' Texte
AccederMenu
MsgBox(" Saisie validée", 64, "Prise en charge des tickets")
end if
Ajout : 17:00 |
=MAX(Tickets.B3:B99)+1
oCel2.string = oCel1.string ' Texte
oCel2.Value = CDbl(oCel1.String)
Après, les goûts et les couleurs....Zelada a écrit:si vous avez un lien vers une base
joel275 a écrit:
- Code : Tout sélectionner AgrandirRéduire
oCel2.Value = CDbl(oCel1.String)
CDbl qui convertit en nombre double précision; si tu n'as que des entiers, CLng() suffit
A plus,
Joël
Ajout : 08:39 |
Erreur d'exécution BASIC
Une exception s'est produite :
Type : com.sun.star.sdbc. SQLException
Message : Impossible d'établir une connexion avec la source de données "TombolaZelada"
Ajout : 11:20 |
Zelada a écrit:impossible de supprimer un acheteur ayant déjà fait un achat
Zelada a écrit:Logiquement, dans les bases de données relationnelles, on ne devrait pas pouvoir supprimer des acheteurs, si ces derniers ont fait des achats
Qu'elle Erreur ?Zelada a écrit:sous Windows XP ApacheOpenOffice version 3.1.1 toujours la même erreur
Après l'euphorie d'hiergrosse déception ce matin
je teste la base au bureau sur trois ordinateurs (configurés conformément aux désirs de la direction)
- windows xp ApacheOpenOffice version 3.1.1
- windows xp LIbreoffice 3.6.5.2
- windows 7 LibreOffice 3.6.5.2
java 1.6.0_20 sur les trois ordinateurs
Erreur d'exécution BASIC
Une exception s'est produite :
Type : com.sun.star.sdbc. SQLException
Message : Impossible d'établir une connexion avec la source de données "TombolaZelada"
'verifier si acheteur déjà enregistré
' On récupère le code sur la feuille pc_acheteurs
CodeSaisie = ThisComponent.Sheets.getByName("pc_acheteurs").getCellByposition(4,14).getvalue
' On active la feuille Acheteurs
maFeuille = ThisComponent.Sheets.getByName("Acheteurs")
' Et on repère la Dernière Ligne
Curseur = maFeuille.createCursor()
Curseur.gotoStartOfUsedArea(False)
Curseur.gotoEndOfUsedArea(True)
Cible = Curseur.getRangeAddress()
LigFin = Cible.EndRow
' On teste les codes en partant de la fin
' puisqu'on a (normalement) plus de chances de la trouver par là si elle existe
' ce qui doit permettre de sortir plus vite de la boucle
For i = LigFin to 1 step -1
' pas la peine de tester la ligne 0, puisque ce sont les entêtes
' On récupère le code
CodeAcheteur = ThisComponent.Sheets.getByName("Acheteurs").getCellByposition(0,i).getvalue
If CodeAcheteur = CodeSaisie Then
'Le code est présent dans Acheteurs : on le signale
MsgBox "Code déjà présent"
' et on ne fait rien
exit sub
End if
Next i
'
' On continue
Zelada a écrit:si acheteur non présent => j'aimerais que rien ne s'affiche mais j'ai un beau #N/D
=SI(ESTERREUR(F2<>0);"";"Acheteur déjà présent")
Dim Cherche As Object, Trouve As Object, CodeSaisie As String
' Et on repère la Dernière Ligne
Curseur = maFeuille.createCursor()
Curseur.gotoStartOfUsedArea(False)
Curseur.gotoEndOfUsedArea(True)
Cible = Curseur.getRangeAddress()
LigFin = Cible.EndRow
MaZone = Mafeuille.GetCellRangeByPosition(0,1,0,LigFin)
Cherche = MaZone.CreateSearchDescriptor
With Cherche
.SearchString = CodeSaisie
.SearchWords = FALSE
End With
Trouve = MaZone.FindFirst(Cherche)
If not isNull(Trouve) then MsgBox("Code déjà présent, On continue ?", 36, "AVERTISSEMENT")
Utilisateur(s) parcourant ce forum : Aucun utilisateur inscrit et 8 invité(s)