[Résolu] [Calc] Création répertoires à partir d'une feuille

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 !
sarahplic
Fraîchement OOthentifié
Messages : 4
Inscription : 23 févr. 2024 09:05

[Résolu] [Calc] Création répertoires à partir d'une feuille

Message par sarahplic »

Bonjour,

Novice en Macro, je fais appel à vos lumières.

Je dois créer une macro pour créer des répertoires (avec une arborescence type) à partir d'un fichier Calc, exemple :

Le fichier Calc est composé de 2 colonnes :
Colonne A : AGENT 1 / AGENT 2 / AGENT 3 / ...
Colonne B : Nom du dossier 01 / Nom du dossier 02 / ...

Après recherches, j'ai réussi à créer la macro pour créer les dossiers "AGENT" ainsi que l'arborescence type, mais il me manque l'incrémentation de la colonne B pour la création des Noms du dossier 01 ... Dans chaque dossier "AGENT"

Le nombre de dossiers par agent varie entre chaque agent.

J'espère être assez claire dans mes explications, sinon n'hésitez pas à me le faire savoir.

Voici la macro :
 Ajout : 

Code : Tout sélectionner

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

Option Explicit

Sub CreerDosssier ()
Dim monDocu As Object
Dim lesFeuils As Object
Dim maFeuil As object
Dim maCell As Object
Dim sTabProjects () As String
Dim x As Integer, z As Integer

Dim Chemin as String

monDocu = ThisComponent
lesFeuils = monDocu.Sheets
maFeuil = lesFeuils.getByName("Feuille1")
For x = 1 To 2000
maCell = maFeuil.getCellRangeByName("A"& x)

If maCell.String <> "" Then
Redim preserve sTabProjects(z)
sTabProjects(z) = maCell.String
z=z+1
End If
Next x

Dim sRep As String
For x = LBound(sTabProjects()) to Ubound(sTabProjects())
sRep = stabProjects(x)
MkDir "C:\Users\MonNom\Documents\Test_Macro\" & sRep & "/INCIT REGUL/1 - Echanges PNCD vers usagers"
MkDir "C:\Users\MonNom\Documents\Test_Macro\" & sRep & "/INCIT REGUL/2 - Echanges usagers vers PNCD"

Next x
End Sub
 
Un grand MERCI à ceux qui prendront le temps de m'aider.
Bonne journée à vous.
Vous ne pouvez pas consulter les pièces jointes insérées à ce message.
Dernière modification par micmac le 26 févr. 2024 15:50, modifié 3 fois.
Raison : Ajout de la coche verte
Libre Office Version: 6.2.7.1.lin1 (x64) - Par obligation
Win 10 Pro
Avatar de l’utilisateur
micmac
RespOOnsable forum
RespOOnsable forum
Messages : 9580
Inscription : 28 août 2010 08:45

Re: Création répertoires à partir d'un fichier Calc

Message par micmac »

Bonjour et bienvenue,

Cette section a des règles très précises que vous devez obligatoirement suivre pour obtenir de l'aide. C'est indiqué dans le cadre rouge en haut de la page.

Il est demandé aux auteurs de faire précéder le titre de leur question d'une balise adéquate. Ce balisage est extrêmement important car il permet d'avoir une base de connaissance optimum en cas de recherche.
Avez-vous remarqué comment étaient postées les autres questions ?

Lisez ce fil pour savoir quelle balise utiliser : sutra27295.html#27295

N'oubliez pas que les termes Macro, OpenOffice ne doivent pas être employés car il sont implicites. Essayez de synthétiser au mieux ce que vous cherchez à faire.

Un titre accrocheur vous permettra d'une part d'être aidé plus rapidement et d'autre part, d'enrichir notre base de connaissances.

Nous l'avons fait pour vous cette fois -ci mais la prochaine fois, veillez-y par vous-même.

Merci de votre collaboration.
Touche Ctrl de Windows = touche cmd⌘ sur Mac
Outils > Options sur Windows = OpenOffice > Préférences sur macOS
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] Création répertoires à partir d'une feuille

Message par Dude »

Salut,

Ton code est alambiqué au possible.
Voici plus simple :

Code : Tout sélectionner

Sub Main
	oDoc = ThisComponent
	oFeuil = oDoc.Sheets.getByName("Feuille1")
	for i = 1 to 8 'agir ici sur le nombre de lignes
		oCellA = oFeuil.getCellRangeByName("A" & i).string
		oCellB = oFeuil.getCellRangeByName("B" & i).string
		sRep = ConvertToUrl("c:\temp\test\" & oCellA & "\" & oCellB)
		MkDir sRep
	next
End Sub
sarahplic
Fraîchement OOthentifié
Messages : 4
Inscription : 23 févr. 2024 09:05

Re: [Calc] Création répertoires à partir d'une feuille

Message par sarahplic »

Merci beaucoup de ta réponse.

J'ai fusionné plusieurs macro trouvées par ci par là, ce qui doit expliquer le fait qu'elle soit si alambiquée :|

Lorsque que j'essaye ta macro, je n'ai pas de message d'erreur, cependant aucun répertoire ne se crée.
Si je rajoute "\Test" entre oCellA et oCellB, là un répertoire est créer mais il ne reprend pas les noms des colonnes
Libre Office Version: 6.2.7.1.lin1 (x64) - Par obligation
Win 10 Pro
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] Création répertoires à partir d'une feuille

Message par Dude »

sarahplic a écrit : 26 févr. 2024 11:36 cependant aucun répertoire ne se crée.
Fournis un nouveau document en faisant référence au même répertoire que moi : c:\temp

Et je vois ceci :
Dans ta signature, il y a écrit :Libre Office Version: 6.2.7.1.lin1 (x64)
Merci d'ajouter également une copie écran de cette information qui me semble bizarre.
sarahplic
Fraîchement OOthentifié
Messages : 4
Inscription : 23 févr. 2024 09:05

Re: [Calc] Création répertoires à partir d'une feuille

Message par sarahplic »

Autant pour moi, j'ai tout remis à plat, ça fonctionne très bien !
Merci beaucoup !!

Puis-je abusé et te demander comment intégrer une arborescence type dans chaque sous dossier ? Exemple :
AGENT 1 / TUTU / Arborescence type (jusqu'à 3 embranchements)
Agent 1 / TATA / Arborescence type
...

J'ai essayé de faire ça :
Sub Main
oDoc = ThisComponent
oFeuil = oDoc.Sheets.getByName("Feuille1")
for i = 1 to 8 'agir ici sur le nombre de lignes
oCellA = oFeuil.getCellRangeByName("A" & i).string
oCellB = oFeuil.getCellRangeByName("B" & i).string
sRep = ConvertToUrl("o:\Test_Macro\" & oCellA & "\" & oCellB & "\INCIT REGUL\1 - Echanges PNCD vers usagers")
sRep = ConvertToUrl("o:\Test_Macro\" & oCellA & "\" & oCellB & "\INCIT REGUL\2 - Echanges usagers vers PNCD")
MkDir sRep
next
End Sub
Mais en fait il me crée 2 fois le même dossier.
Vous ne pouvez pas consulter les pièces jointes insérées à ce message.
Libre Office Version: 6.2.7.1.lin1 (x64) - Par obligation
Win 10 Pro
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] Création répertoires à partir d'une feuille

Message par Dude »

sarahplic a écrit : 26 févr. 2024 14:00 Mais en fait il me crée 2 fois le même dossier.
Je ne vois pas comment il pourrait te créer 2 fois le même dossier. Tout système d'exploitation refuse l'homonymie.

Et comment penses-tu pouvoir créer 2 dossiers avec un seul MkDir :

Code : Tout sélectionner

		sRep = ConvertToUrl("o:\Test_Macro\" & oCellA & "\" & oCellB & "\INCIT REGUL\1 - Echanges PNCD vers usagers")
		sRep = ConvertToUrl("o:\Test_Macro\" & oCellA & "\" & oCellB & "\INCIT REGUL\2 - Echanges usagers vers PNCD")
		MkDir sRep
Merci d'ajouter le balisage [Résolu]
sarahplic
Fraîchement OOthentifié
Messages : 4
Inscription : 23 févr. 2024 09:05

Re: [Calc] Création répertoires à partir d'une feuille

Message par sarahplic »

Du coup il faudrait rajouter des MkDir derrière comme ça, Pour chaque sous dossier voulu ?
sRep = ConvertToUrl("o:\Test_Macro\" & oCellA & "\" & oCellB & "\INCIT REGUL\1 - Echanges PNCD vers usagers")
MkDir sRep
MkDir "o:\Test_Macro\" & oCellA & "\" & oCellB & "\INCIT REGUL\1 - Echanges PNCD vers usagers")
Enlever le MkDir srep peut être ?

Ou reprendre comme au début
Chemin = MkDir (convertToUrl (o:\Test_Macro\" ...
Pour chaque répertoire ?
Libre Office Version: 6.2.7.1.lin1 (x64) - Par obligation
Win 10 Pro
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: [Résolu] [Calc] Création répertoires à partir d'une feuille

Message par Dude »

La programmation, ça n'est pas du pifomètre.
Pas le temps de t'expliquer comment déboguer mais tu devrais sérieusement étudier cela.
Voici un exemple qui ajoute des sous-répertoires supplémentaires.

Code : Tout sélectionner

Sub Main
	oDoc = ThisComponent
	oFeuil = oDoc.Sheets.getByName("Feuille1")
	sSousRep = array("SousRep1", "SousRep2")
	for i = 1 to 8 'agir ici sur le nombre de lignes
		oCellA = oFeuil.getCellRangeByName("A" & i).string
		oCellB = oFeuil.getCellRangeByName("B" & i).string
		sRep = "c:\temp\test\" & oCellA & "\" & oCellB
		for j = 0 to UBound(sSousRep)
			MkDir ConvertToUrl(sRep & "\" & sSousRep(j))
		next
	next
End Sub