01-07-2011, 07:11 PM
Ce code permet d'ajouter dans une table Windev des cellules copiées dans MS Excel. Ca devrait aussi fonctionner avec Open Office (Calc).
Code :
sTxt, sLigne est une chaîne
i, nPosTAB, nPosCR, nPosMax, j, nb, nAscii, nPosVirgule sont des entiers
bQueChiffresDepuisTAB, bVirguleDepuisTAB est un booléen
SI PressePapierFormat(ppfTexte) ALORS
// récupère le texte dans le presse-papier
sTxt = PressePapier()
nPosMax = Taille(sTxt)
i = 1 // indiquera la position courante du balayage de la chaine
TANTQUE i <= nPosMax
// récupère la prochaine ligne (avant le retour chariot)
nPosCR = Position(sTxt, CR, i)
SI nPosCR = 0 ALORS // pas de nouvelle ligne trouvée
sLigne = Milieu(sTxt,i,nPosMax-i+1)
i = nPosMax + 1
SINON
sLigne = Milieu(sTxt,i,nPosCR-i)
i = nPosCR + 2
FIN
// remplace les virgules par des points dans les nombres à virgules
// (lors d'un copier dans Excel, une tabulation sépare les champs)
nb = Taille(sLigne)
bQueChiffresDepuisTAB = Vrai
bVirguleDepuisTAB = Faux
POUR j=1 A nb
nAscii = Asc(Milieu(sLigne,j,1))
SI nAscii=9 ALORS // tabulation
SI bQueChiffresDepuisTAB ET bVirguleDepuisTAB ALORS
sLigne = Gauche(sLigne,nPosVirgule-1)+"."+Droite(sLigne,nb-nPosVirgule)
FIN
bQueChiffresDepuisTAB = Vrai
SINON SI nAscii=44 ALORS // test si virgule
bVirguleDepuisTAB = Vrai
nPosVirgule = j
SINON SI nAscii<48 OU nAscii>57 ALORS // test si pas chiffre
bQueChiffresDepuisTAB = Faux
FIN
FIN
// ajout de la ligne dans la table
TableAjoute(TABLE_Donnees, sLigne)
FIN
FIN