[Résolu] [Calc] Copier/coller cellule en recherchant plusieurs valeurs dans une liste non contiguëe

Discussions et questions sur tout ce qui concerne la programmation tous langages et tous modules confondus.

Modérateur : Vilains modOOs

Règles du forum
:alerte: 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 !
Toto99
Membre lOOyal
Membre lOOyal
Messages : 25
Inscription : 18 oct. 2022 14:50

[Résolu] [Calc] Copier/coller cellule en recherchant plusieurs valeurs dans une liste non contiguëe

Message par Toto99 »

Bonjour à tous,

J'ai créé un fichier grâce à votre aide il y a un peu plus d'1 an. Après plus d'une année d'utilisation, j'aimerais apporter 2 modifications (je vais ouvrir 2 sujets) et j'ai donc encore besoin de vous.

Demande d'origine : viewtopic.php?p=365531#p365531

J'aimerais modifier la macro pour que celle-ci fonctionne même quand les lignes ne sont pas contigues. Car certains de mes collègues font dans l'originalité en laissant des lignes vides :? :fou:

Je joins le fichier pour test.

Macro présente :

Code : Tout sélectionner


REM  *****  BASIC  *****

Option Explicit

Sub Main
Dim oSheets As Object
Dim oSource As Object
Dim oCible As Object
Dim codesS As Object
Dim codesC As Object
Dim codeS As Object
Dim codeC As Object
Dim apurement As String
Dim x As Long
oSheets = Thiscomponent.Sheets
oSource = oSheets.GetByName("Traitement par lots")
oCible = oSheets.GetByName("Suivi")
codesS = oSource.Columns.GetByName("A").queryContentCells(1).Data
codesC = oCible.Columns.GetByName("A").queryContentCells(1).Data
apurement = oSource.GetCellRangeByName("H5").String
For Each codeC in codesC
	For Each codeS in codesS
		if codeS(0) = codeC(0) then
			'Sans effacer les informations déjà dans les cellules
			'if oCible.GetCellByPosition(10,2+x).String = "" Then
				oCible.GetCellByPosition(10,2+x).SetString(apurement)
			'end if
		end if
	next codeS
x = x+1
next codeC
msgBox "Traitement par lots terminé (apurement)"
End Sub

D'avance merci pour votre aide
Vous ne pouvez pas consulter les pièces jointes insérées à ce message.
Dernière modification par Toto99 le 05 nov. 2023 21:11, modifié 1 fois.
LibreOffice 6.4 (sans possibilité de mise à jour) / Windows 10
zeguedon
ManitOOu
ManitOOu
Messages : 3031
Inscription : 02 juil. 2014 17:25

Re: [Calc] Copier/coller cellule en recherchant plusieurs valeurs dans une liste non contiguëe

Message par zeguedon »

Bonjour,
Toto99 a écrit : 04 nov. 2023 13:12 certains de mes collègues font dans l'originalité en laissant des lignes vides
Il y aurait-il un inconvénient à ce que le code en question, au lieu de jongler avec les cellules vides, se charge plus simplement de les supprimer avant d'effectuer le traitement. Le second avantage serait d'avoir un fichier toujours "propre" après traitement, le premier étant la simplicité du traitement. On pourrait même s'assurer, lors du remplissage de la colonne A, au moment de l’insertion automatique de la date, que nous sommes bien positionnés sur la première ligne vide ?
Comment baliser [Résolu] ?
AOO
LibreOffice
Sous Linux
Avatar de l’utilisateur
Dolev
SuppOOrter
SuppOOrter
Messages : 1047
Inscription : 19 août 2018 05:20

Re: [Calc] Copier/coller cellule en recherchant plusieurs valeurs dans une liste non contiguëe

Message par Dolev »

Bonjour,

Pourquoi utiliser queryContentCells dans ce cas ?
Déterminez la plage de cellules pour prendre toutes les lignes.
Faites un test quand il y a plus de trois lignes vides afin de sortir de la boucle.
Open Office 4.1.15 sous Windows 11
Toto99
Membre lOOyal
Membre lOOyal
Messages : 25
Inscription : 18 oct. 2022 14:50

Re: [Calc] Copier/coller cellule en recherchant plusieurs valeurs dans une liste non contiguëe

Message par Toto99 »

Bonjour,

Malheureusement zeguedon quand 20 personnes travaillent sur le même fichier, il y a presque 20 comportements de saisies différents. Certains laissent des lignes vides qui sont comblées par d'autres mais aussi certains complètent toutes les informations sans le remplissage de la colonne A (qu'ils font à postériori). Bref c'est l'enfer, et la solution ne me parait pas adaptée à mon usage. :?

Pour répondre à Dolev, je ne sais pas car ce n'est pas moi qui ai programmé ce code. Je ne sais pas le lire ou le modifier. J'arrive à comprendre vaguement une macro pour pouvoir l'adapter à un autre fichier mais c'est tout. :(
LibreOffice 6.4 (sans possibilité de mise à jour) / Windows 10
Avatar de l’utilisateur
Dude
IdOOle de la suite
IdOOle de la suite
Messages : 25602
Inscription : 03 mars 2006 07:45
Localisation : 127.0.0.1

Re: [Calc] Copier/coller cellule en recherchant plusieurs valeurs dans une liste non contiguëe

Message par Dude »

Salut,
Toto99 a écrit : 05 nov. 2023 15:30 quand 20 personnes travaillent sur le même fichier, [...] et la solution ne me parait pas adaptée à mon usage.
Effectivement, un tableur n'est certainement pas destiné à faire de l'accés concurrentiel.
Si tu cherches à faire du contrôle de saisie, il faut passer par des formulaires.
Et plutôt que Calc, utiliser le module Base adapté à cet usage(*).



(*) http://oooforum.free.fr/index.php/2016/ ... -planning/
Toto99
Membre lOOyal
Membre lOOyal
Messages : 25
Inscription : 18 oct. 2022 14:50

Re: [Calc] Copier/coller cellule en recherchant plusieurs valeurs dans une liste non contiguëe

Message par Toto99 »

Mon problème est résolu via mon autre demande (viewtopic.php?p=378019#p378019).

Merci zeguedon :super:
LibreOffice 6.4 (sans possibilité de mise à jour) / Windows 10