16 messages in org.openoffice.fr.progRe: [prog] Nom de variable dynamique
FromSent OnAttachments
Michel GrentzingerNov 7, 2007 4:39 am 
Bernard MarcellyNov 7, 2007 5:19 am 
Michel GrentzingerNov 7, 2007 5:43 am 
Mathias MichelNov 7, 2007 7:26 am 
BobNov 7, 2007 9:48 am 
Michel GrentzingerNov 7, 2007 1:16 pm 
Michel GrentzingerNov 7, 2007 1:19 pm 
Mathias MichelNov 7, 2007 2:28 pm 
Michel GrentzingerNov 8, 2007 12:17 am 
BobNov 8, 2007 1:29 am 
Laurent GodardNov 8, 2007 1:41 am 
Michel GrentzingerNov 8, 2007 4:45 am 
BobNov 8, 2007 11:59 am 
Michel GrentzingerNov 8, 2007 1:06 pm 
BobNov 8, 2007 2:23 pm 
Michel GrentzingerNov 9, 2007 4:48 am 
Actions with this message:
Paste this link in email or IM:
Paste this link in email or IM:
Atom feed for this thread
Paste this URL into your reader:
Subject:Re: [prog] Nom de variable dynamiqueActions...
From:Bob (mlo@bobiciel.com)
Date:Nov 7, 2007 9:48:37 am
List:org.openoffice.fr.prog

Mathias Michel a écrit :

Le 07/11/07, Michel Grentzinger<mic.@online.fr> a écrit :

Hors cerrtaines colonnes de cette plage seront ammenées à être inversées ou à être supprimées donc ma solution actuelle n'est pas fiable car uneLigne(2) va renvoyer un contenu inadapté... Je souhaite donc utiliser l'en-tête des colonnes (Rang, Nom, Prénom, Date) au lieu du numéro... Par exemple sMessage = uneLigne(Colonne_Nom) avec Colonne_Nom contenant le numéro de la colonne dont l'en-tête contient "Nom".

Je sèche avec les tableaux... Quelqu'un peut-il me mettre sur la bonne piste ?

PS : je cherche une telle solution "rapide" car je dois traiter 8 tableaux de 100 lignes x 10 colonnes...

Bonjour,

Pourquoi ne pas utiliser les fonctions de Calc ? RECHERCHEH devrait faire l'affaire.

=RECHERCHEH(La_zone_du_tableau; adresse_de_la_cellule_contenant_le nom_de_colonne; adresse_de_la_cellule_contenant_le_numero_de_ligne; 0)

ensuite, ta macro modifie simplement les cellules contenant le nom de la colonne et le numéro de ligne et tu récupère le résultat de la formule =RECHERCHEV(...)

------------------------------------------------------------------------------

Autre solution par macro : la recherche est assez bestiale. Je voulais améliorer tout ça en conservant le résultat de la première recherche dans un cache, ce qui devrait booster les performances.

cacheMnemo as string dim cacheNumColForMnemo(100) as integer

Function ColNumForMnemo(aMnemo as string) as integer dim colNum as integer dim rowNum as integer dim colName as string dim findCol as boolean

colNum = 0 rowNum = 0 ' numero de la ligne contenant les entetes findCol = false with TheSheet do until .getCellByPosition(colNum, rowNum).string = "" colName = .getCellByPosition(colNum, rowNum).string if colName = aMnemo then findCol = true exit do end if colNum = colNum + 1 loop end with

if findCol then ColNumForMnemo() = colNum else ColNumForMnemo() = -1 end if

End Function

------------------------------------------------------------------------------

En espérant que ça puisse t'aider

a+