Bonjour
Me revoilà mais cette fois avec une question plus complexe.
Dans mon tableau ci joint je souhaiterais déplacer dans la feuille "dossiers transmis" certaines lignes des 6 premières feuilles (ce via la boite de dialogue 2 elle même lancée par le bouton transmettre de la boite de dialogue 1).
la feuille "dossiers transmis" est composée de plages de cellules pour chaque mois de l'année.
Ma boite de dialogue 2 comporte un champs date qui datera la sortie du dossier et qui devra alors se ranger dans la zone du mois concerné.
Naturellement chaque ligne déplacée devrait se ranger à la dernière ligne vide de chaque mois.
Seules les 5 premières cellules des lignes sont à déplacer puisque la dernière cellule correspondant à la colonne Observation n'apparait plus dans le tableau de ma dernière feuille,
Cependant 3 nouvelles cellules doivent être renseignées par des commandes des boites de dialogue 1 et 2 à savoir "DateSortie" , "Décision" dans dilogue1 et "Attribution" dans dilogue2.
Voila je ne sais pas comment structurer le code surtout le rangement relatif à la date de sortie.
Merci de votre aide.
[Résolu][Calc]Déplacer ligne dans une zone selon date
Modérateur : Vilains modOOs
Règles du forum
Balisage obligatoire dans cette section !
Aidez-nous à vous aider au mieux en balisant correctement votre question : reportez-vous sur les règles de cette section avant de poster !
Balisage obligatoire dans cette section !
Aidez-nous à vous aider au mieux en balisant correctement votre question : reportez-vous sur les règles de cette section avant de poster !
-
- Membre OOrganisé
- Messages : 76
- Inscription : 03 nov. 2015 18:01
[Résolu][Calc]Déplacer ligne dans une zone selon date
Vous ne pouvez pas consulter les pièces jointes insérées à ce message.
Dernière modification par Nikky-974 le 08 sept. 2016 07:48, modifié 1 fois.
Nikky974
Windows 7 entreprise (2009) LibreOffice Version: Version: 5.0.6.3.0+
Windows 7 entreprise (2009) LibreOffice Version: Version: 5.0.6.3.0+
-
- RespOOnsable forum
- Messages : 9255
- Inscription : 28 août 2010 08:45
Re: [Calc]Déplacer ligne dans une zone définie selon une dat
Bonjour,
Est-ce une erreur, un choix, un oubli, une obligation ?
Dans ce dernier cas, mentionnez-le dans votre signature par "Obligation de version".
Pour connaître la version que vous possédez : https://forum.openoffice.org/fr/forum/v ... 582#p11582
Nous vous invitons à vous mettre à jour de la dernière version : https://forum.openoffice.org/fr/forum/v ... m.php?f=38.
Accès direct à votre signature pour la corriger.
Cordialement.
Votre signature indique que vous disposez d'une version de OpenOffice qui n'est plus maintenue.votre signature a écrit : LibreOffice Version: 4.2.6.3
Est-ce une erreur, un choix, un oubli, une obligation ?
Dans ce dernier cas, mentionnez-le dans votre signature par "Obligation de version".
Pour connaître la version que vous possédez : https://forum.openoffice.org/fr/forum/v ... 582#p11582
Nous vous invitons à vous mettre à jour de la dernière version : https://forum.openoffice.org/fr/forum/v ... m.php?f=38.
Accès direct à votre signature pour la corriger.
Cordialement.
Touche Ctrl de Windows = touche cmd⌘ sur Mac
Outils > Options sur Windows = OpenOffice > Préférences sur Mac
Outils > Options sur Windows = OpenOffice > Préférences sur Mac
-
- GourOOu
- Messages : 5622
- Inscription : 25 nov. 2011 18:07
- Localisation : Guyane
Re: [Calc]Déplacer ligne dans une zone définie selon une dat
Bonsoir
Dans un premier temps, applique les consignes de la modération en précisant dans ta signature le pourquoi de la version de LibO utilisée.
Ensuite, pour le funIl n'y a aucun contrôle, il faudrait au moins vérifier qu'une entrée soit saisie dans la liste Attribution du dialog1, qu'une date de sortie et une entrée de la liste Décisions soient saisies dans le dialog2.
Les données transférées ne sont pas effacées mais ça tu sais faire.
A+
Dans un premier temps, applique les consignes de la modération en précisant dans ta signature le pourquoi de la version de LibO utilisée.
Ensuite, pour le fun
Code : Tout sélectionner
Sub Transmettre
Dim oDoc as Object, oFeuille as Object, ZoneDepart as Object, maFeuille as Object, maZone as Object
Dim maDate as Object, mois as String, Recherche as Object, trouve as Variant, maZoneMois as Object
Dim ZoneArrivee as Object, zonesVides as Variant, maLigne as Long
oDoc = thisComponent
oFeuille = thisComponent.CurrentController.ActiveSheet
ZoneDepart = oFeuille.getCellRangeByPosition(0,ligne,4,Ligne)
maFeuille = oDoc.Sheets.getByName("Dossiers transmis")
maZone = maFeuille.getCellRangeByName("A3:A277")
maDate = oDialog2.getControl("DateSortie").Date
Select Case maDate.Month
Case 1
mois = "JANVIER" & " " & maDate.Year
Case 2
mois = "FEVRIER" & " " & maDate.Year
Case 3
mois = "MARS" & " " & maDate.Year
Case 4
mois = "AVRIL" & " " & maDate.Year
Case 5
mois = "MAI" & " " & maDate.Year
Case 6
mois = "JUIN" & " " & maDate.Year
Case 7
mois = "JUILLET" & " " & maDate.Year
Case 8
mois = "AOÛT" & " " & maDate.Year
Case 9
mois = "SEPTEMBLE" & " " & maDate.Year
Case 10
mois = "OCTOBRE" & " " & maDate.Year
Case 11
mois = "NOVEMBRE" & " " & maDate.Year
Case 12
mois = "DECEMBRE" & " " & maDate.Year
End Select
Recherche = maZone.createSearchDescriptor
With Recherche
.SearchString = mois
.SearchWords = True
End With
trouve = maZone.findFirst(Recherche)
maZoneMois = maFeuille.getCellRangeByPosition(0,trouve.cellAddress.Row + 2,0,trouve.cellAddress.Row + 21)
zonesVides = maZoneMois.queryEmptyCells.RangeAddresses
maLigne = zonesVides(0).StartRow
ZoneArrivee = maFeuille.getCellRangeByPosition(0,maLigne,4,maLigne)
ZoneArrivee.DataArray = ZoneDepart.DataArray
maFeuille.getCellByposition(5,maLigne).Value = DateValue(oDialog2.getControl("DateSortie").Text)
maFeuille.getCellByposition(6,maLigne).String = oDialog2.getControl("Decision").SelectedItem
maFeuille.getCellByposition(7,maLigne).String = oDialog1.getControl("Attribution").SelectedItem
oDialog1.EndExecute
oDialog2.EndExecute
oDoc.CurrentController.select(maFeuille.getCellRangeByPosition(0,maLigne,7,maLigne))
End Sub
Les données transférées ne sont pas effacées mais ça tu sais faire.
A+
Libre Office Version: 6.1.6 et Apache OpenOffice 4.1.6 Sur Xubuntu 18.04 AMD64
-
- Membre OOrganisé
- Messages : 76
- Inscription : 03 nov. 2015 18:01
Re: [Calc]Déplacer ligne dans une zone définie selon une dat
Merci Piaf je testerais lundi matin. Concernant la version de libre office c est malheureusement la seule installée au boulot. Pas eu de mise à jour depuis. Nous sommes des utilisateurs des pc. Le profil administrateur est bloqué donc aucun moyen de telechager une nouvelle version. Donc oui il s agit bien d une obligation de version. Je modifie ma signature. Encore merci piaf
Nikky974
Windows 7 entreprise (2009) LibreOffice Version: Version: 5.0.6.3.0+
Windows 7 entreprise (2009) LibreOffice Version: Version: 5.0.6.3.0+
-
- Membre OOrganisé
- Messages : 76
- Inscription : 03 nov. 2015 18:01
Re: [Calc]Déplacer ligne dans une zone définie selon une dat
Merci Piaf ça fonctionne nickel
Juste un petit Hic.
en effaçant la ligne transmise je conserve la dernière cellule.
A juste titre puisqu'elle n'est pas incluse dans ma "ZoneDépart".
J'ai du bidouiller pour la zone liste attribution puisque comme celle ci n'est pas reportée dans ma boucle elle ne conserve pas sa valeur.
J'ai donc modifié le déplacement de la ligne en mettant à la place le nom de la feuille active. Ca marche aussi du coup.
Reste cette case Observation qui ne s'efface pas. La réponse est surement devant mon nez mais je craint de tout planter.
Merci
Juste un petit Hic.
en effaçant la ligne transmise je conserve la dernière cellule.
A juste titre puisqu'elle n'est pas incluse dans ma "ZoneDépart".
J'ai du bidouiller pour la zone liste attribution puisque comme celle ci n'est pas reportée dans ma boucle elle ne conserve pas sa valeur.
J'ai donc modifié le déplacement de la ligne en mettant à la place le nom de la feuille active. Ca marche aussi du coup.
Reste cette case Observation qui ne s'efface pas. La réponse est surement devant mon nez mais je craint de tout planter.
Merci
Vous ne pouvez pas consulter les pièces jointes insérées à ce message.
Nikky974
Windows 7 entreprise (2009) LibreOffice Version: Version: 5.0.6.3.0+
Windows 7 entreprise (2009) LibreOffice Version: Version: 5.0.6.3.0+
-
- GourOOu
- Messages : 5622
- Inscription : 25 nov. 2011 18:07
- Localisation : Guyane
Re: [Calc]Déplacer ligne dans une zone définie selon une dat
BonjourDevrait le faire.
A+
Code : Tout sélectionner
Sub Transmettre
Dim oDoc as Object, oFeuille as Object, ZoneDepart as Object, maFeuille as Object, maZone as Object
Dim maDate as Object, mois as String, Recherche as Object, trouve as Variant, maZoneMois as Object
Dim gomme as Long
Dim ZoneArrivee as Object, zonesVides as Variant, maLigne as Long
oDoc = thisComponent
oFeuille = thisComponent.CurrentController.ActiveSheet
ZoneDepart = oFeuille.getCellRangeByPosition(0,ligne,4,Ligne)
maFeuille = oDoc.Sheets.getByName("Dossiers transmis")
maZone = maFeuille.getCellRangeByName("A3:A277")
maDate = oDialog2.getControl("DateSortie").Date
If oDialog2.getControl("DateSortie").Text = "" Then
MsgBox "Vous devez renseigner le champ date de sortie du dossier"
Exit Sub
End If
Select Case maDate.Month
Case 1
mois = "JANVIER" & " " & maDate.Year
Case 2
mois = "FEVRIER" & " " & maDate.Year
Case 3
mois = "MARS" & " " & maDate.Year
Case 4
mois = "AVRIL" & " " & maDate.Year
Case 5
mois = "MAI" & " " & maDate.Year
Case 6
mois = "JUIN" & " " & maDate.Year
Case 7
mois = "JUILLET" & " " & maDate.Year
Case 8
mois = "AOÛT" & " " & maDate.Year
Case 9
mois = "SEPTEMBRE" & " " & maDate.Year
Case 10
mois = "OCTOBRE" & " " & maDate.Year
Case 11
mois = "NOVEMBRE" & " " & maDate.Year
Case 12
mois = "DECEMBRE" & " " & maDate.Year
End Select
Recherche = maZone.createSearchDescriptor
With Recherche
.SearchString = mois
.SearchWords = True
End With
trouve = maZone.findFirst(Recherche)
maZoneMois = maFeuille.getCellRangeByPosition(0,trouve.cellAddress.Row + 2,0,trouve.cellAddress.Row + 21)
zonesVides = maZoneMois.queryEmptyCells.RangeAddresses
maLigne = zonesVides(0).StartRow
ZoneArrivee = maFeuille.getCellRangeByPosition(0,maLigne,4,maLigne)
ZoneArrivee.DataArray = ZoneDepart.DataArray
maFeuille.getCellByposition(5,maLigne).Value = DateValue(oDialog2.getControl("DateSortie").Text)
maFeuille.getCellByposition(6,maLigne).String = oDialog2.getControl("Decision").SelectedItem
maFeuille.getCellByposition(7,maLigne).String = oFeuille.Name
gomme = com.sun.star.sheet.CellFlags.DATETIME + com.sun.star.sheet.CellFlags.STRING + com.sun.star.sheet.CellFlags.VALUE
oFeuille.getCellRangeByPosition(0,ligne,5,Ligne).clearContents(gomme)
oDialog1.EndExecute
oDialog2.EndExecute
oDoc.CurrentController.select(maFeuille.getCellRangeByPosition(0,maLigne,7,maLigne))
End Sub
A+
Libre Office Version: 6.1.6 et Apache OpenOffice 4.1.6 Sur Xubuntu 18.04 AMD64
-
- Membre OOrganisé
- Messages : 76
- Inscription : 03 nov. 2015 18:01
Re: [Résolu][Calc]Déplacer ligne dans une zone selon date
Parfait ça fonctionne MERCI Beaucoup
Nikky974
Windows 7 entreprise (2009) LibreOffice Version: Version: 5.0.6.3.0+
Windows 7 entreprise (2009) LibreOffice Version: Version: 5.0.6.3.0+