[Résolu][Calc] scinder une cellule suivant la casse des mots de cette cellule

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 !
margot666
NOOuvel adepte
NOOuvel adepte
Messages : 20
Inscription : 22 mai 2023 19:29

[Résolu][Calc] scinder une cellule suivant la casse des mots de cette cellule

Message par margot666 »


La modération vous a écrit: Merci de lire le bandeau rouge en haut de la page !
Corrigé à votre place pour cette fois.

Bonjour
Comme suggéré par un membre du forum, je reposte ici ma question, initialement placée dans la section "tableur"

J'ai reçu un fichier contenant les identités des parents d'élèves d'un collège, en tant que membre de la FCPE.
Ces données ne sont pas faciles à utiliser car :
- NOM et prénom sont contenus ensemble dans une même cellule (nom en Majuscules et prénom en minuscules)
- l'adresse est entièrement mise dans une seule cellule, num et rue sur une ligne + code postal et ville sur une autre (avec un saut dans la cellule)

Je cherche bien sûr à séparer chacun des éléments dans des colonnes séparées......
pas si facile....pour moi.....

belle journée à vous !
Vous ne pouvez pas consulter les pièces jointes insérées à ce message.
Dernière modification par margot666 le 04 oct. 2025 06:42, modifié 2 fois.
Margot
Libreoffice 25.8.1
Ubuntu 25.04
Avatar de l’utilisateur
DLE
HédOOniste
HédOOniste
Messages : 1514
Inscription : 30 déc. 2007 18:56
Localisation : Lille

Re: scinder une cellule suivant la casse des mots de cette cellule

Message par DLE »

coordonnees_v2.ods
Bonjour,
En espérant que toutes les cellules ont le même format que celles de la ligne 2.
Dans la colonne "A" tout texte en majuscules et considéré comme le nom de famille, le reste comme prénom.
Dans la colonne "B", la macro recherche le code postal et crée l'adresse, la ville et le CP dans les cellules adjacentes. Si on ne trouve pas le code postal un message d'erreur est écrit en colonne "C".
A+

Code : Tout sélectionner

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

Sub reformat()
GlobalScope.BasicLibraries.loadLibrary("ScriptForge")
Dim oDoc as Object, oF1 as object, i as Long
Dim oCell as object, oCC as object
Dim oCellValue as Double
Dim x As Integer
Dim y As Integer
Dim sNom As String
Dim sPrenom As String
Dim sCP As String
Dim sVille As String
Dim sAdr As String
Dim iLigne As Integer
Dim iCol As integer

	oDoc = ThisComponent
	oF1=oDoc.Sheets.getbyname("Feuille1")
	iLigne = 1
	iCol = 0
	Do While oF1.getCellByPosition(iCol,iLigne).String <> ""
		oCell = oF1.getCellByPosition(iCol,iLigne)
		sSplit = split(oCell.string," ",10)
' Extraire nom et prénom
		For x = 0 To ubound(sSplit())
			if isupper(sSplit(x)) Then
				sNom = sNom + " " + sSplit(x)
			Else 
				sPreNom = sPrenom + " " + sSplit(x)			
			End If
		Next
' Extraction adresse
		oCell = oF1.getCellByPosition(iCol+1,iLigne)
		sAdresse = replace(oCell.string,chr(10)," ",1,1) 'Suppression. Retour ligne
		sSplit = split(sAdresse," ",50)	
		y = 0	
		For x = 0 To ubound(sSplit())
			if isnumeric(sSplit(x)) Then
				If len(sSplit(x)) = 5 Then
					sCP =  sSplit(x)
 					finadr =Instr(1, oCell.string, sCP)  -2
					sAdr = mid(oCell.string,1,finadr)
					sVille = mid(oCell.string,finadr+7,len(oCell.string)-finadr+5)
				End If
			End If
		Next
		If sCP = "" Then
			oF1.getCellByPosition(2,iLigne).String = "Code postal non trouvé ou incorrect"
		else			
			oF1.getCellByPosition(2,iLigne).String = trim(sNom)
			oF1.getCellByPosition(3,iLigne).String = trim(sPrenom)
			oF1.getCellByPosition(4,iLigne).String = trim(sAdr)
			oF1.getCellByPosition(5,iLigne).String = trim(sVille)
			oF1.getCellByPosition(6,iLigne).String = sCP
		End If 
		iLigne = iLigne + 1
		sNom = ""
		sPrenom =""
		sAdr = ""
		sVille = ""
		sCP = ""
	loop

End Sub
Vous ne pouvez pas consulter les pièces jointes insérées à ce message.
Dernière modification par DLE le 03 oct. 2025 17:51, modifié 1 fois.
MacOS Sequoia 15.6 (iMac-M4) : AOO 4.1.15 , LibreOffice 25.2.6.2, Adoptium-temurinJDK 1.8.0_402, CCC, FireFox, Thunderbird, ORB 1.2.1
Parallel Desktop = Windows 11 & MacOS : AOO, Libreoffice.
margot666
NOOuvel adepte
NOOuvel adepte
Messages : 20
Inscription : 22 mai 2023 19:29

Re: [Calc] scinder une cellule suivant la casse des mots de cette cellule

Message par margot666 »

formidable !
je vais tester cela ce soir !
Margot
Libreoffice 25.8.1
Ubuntu 25.04
Avatar de l’utilisateur
DLE
HédOOniste
HédOOniste
Messages : 1514
Inscription : 30 déc. 2007 18:56
Localisation : Lille

Re: [Calc] scinder une cellule suivant la casse des mots de cette cellule

Message par DLE »

Nouvelle version de la macro dans mon message précédent.
MacOS Sequoia 15.6 (iMac-M4) : AOO 4.1.15 , LibreOffice 25.2.6.2, Adoptium-temurinJDK 1.8.0_402, CCC, FireFox, Thunderbird, ORB 1.2.1
Parallel Desktop = Windows 11 & MacOS : AOO, Libreoffice.
margot666
NOOuvel adepte
NOOuvel adepte
Messages : 20
Inscription : 22 mai 2023 19:29

Re: [Calc] scinder une cellule suivant la casse des mots de cette cellule

Message par margot666 »

Bonjour
C'est formidable, ça fonctionne parfaitement !
bon, il n'y a pas à dire, il faut se lancer dans les macros....
Merci pour cette aide précieuse, et bon week-end !
Margot
Libreoffice 25.8.1
Ubuntu 25.04