PC SOFT

FORUMS PROFESSIONNELS
WINDEVWEBDEV et WINDEV Mobile

Accueil → WINDEV 2024 → Raz des plages nommées dans Excel
Raz des plages nommées dans Excel
Débuté par LC, 11 déc. 2017 10:37 - 23 réponses
Membre enregistré
628 messages
Popularité : +0 (16 votes)
Posté le 11 décembre 2017 - 10:37
bonjour à tous,
Avant chaque transfert de plages nommées dans Excel je raz les plages déjà existantes de la feuille ouverte en cours
comme ci dessous :
n est une chaîne
i = 0
POUR i = 1 A xl>>ActiveSheet>>names>>Count
n = xl>>ActiveSheet>>names[i]>>name
QUAND EXCEPTIONEXCEPTION DANS
xl>>ActiveSheet>>range(n)>>Delete
FAIRE
//RETOUR
FIN
FIN

le nommage des plages se suppriment bien mais pas le contenu des cellules, bizarre .. qu'est ce que j'ai oublié ?
Membre enregistré
628 messages
Popularité : +0 (16 votes)
Posté le 11 décembre 2017 - 19:56
Personne ?
Membre enregistré
962 messages
Popularité : +183 (185 votes)
Posté le 12 décembre 2017 - 18:00
hello,
tu peux essayer :
QUAND EXCEPTIONEXCEPTION DANS
xl>>ActiveSheet>>range(n)>>ClearContents
xl>>ActiveSheet>>range(n)>>Delete
FAIRE
//RETOUR
FIN


--
Ami calmant, J.P
Message modifié, 12 décembre 2017 - 18:01
Membre enregistré
948 messages
Popularité : +30 (92 votes)
Posté le 12 décembre 2017 - 20:02
Coucou,

Je crois que tu dois pas oublier de replace un ExceptionActive()

// Ré-active le traitement d'exception
ExceptionActive()


Je te salut en passant Jurassic Pork ;)

--
In üs we trust - Joyeux noël
Membre enregistré
628 messages
Popularité : +0 (16 votes)
Posté le 12 décembre 2017 - 21:29
Merci pour ta réponse Jurassic Pork, mais mon appli ne passe plus dans cette boucle :
POUR i = 1 A xl>>ActiveSheet>>names>>count
et donc je peux tester ta ligne en plus, je ne comprends pas pourquoi ...
Membre enregistré
628 messages
Popularité : +0 (16 votes)
Posté le 12 décembre 2017 - 21:29
Heu .. je ne connais pas cette instruction, je la code ou ? ça fait quoi ? merci encore pour ta réponse
Membre enregistré
948 messages
Popularité : +30 (92 votes)
Posté le 12 décembre 2017 - 21:34
Coucou,

^^, regarde dabs la dox, met dans dans le code qui catch l exeption ^^

--
In üs we trust - Joyeux noël
Membre enregistré
628 messages
Popularité : +0 (16 votes)
Posté le 12 décembre 2017 - 22:25
ce code (plus bas) me renvoie 0 au lieu du nombre de cellules nommées, pourtant le classeur est ouvert avant que je lance cette
instruction et il y a bien des cellules nommées ... pfuu .. que dois je faire ?
xl>>ActiveSheet>>names>>Count
Membre enregistré
948 messages
Popularité : +30 (92 votes)
Posté le 12 décembre 2017 - 23:25
Coucou,

passe en v23, et t arrete les pilotage hazardeux. ..
Dixit: Jerome

--
In üs we trust - Joyeux noël
Membre enregistré
962 messages
Popularité : +183 (185 votes)
Posté le 12 décembre 2017 - 23:32
hello,
Méfiance ! Dans Excel,il y a des plages nommées par feuille et par classeur. Pour voir ceci il faut aller dans Formules/Gestionnaire de noms, dans la colonne étendue. Si tes plages sont en étendue Classeur il faut utiliser :
POUR i = 1 A xl>>ActiveWorkBook>>Names>>Count
n=xl>>ActiveWorkBook>>Names[i]>>Name
xl>>ActiveSheet>>range(n)>>ClearContents()
xl>>ActiveSheet>>range(n)>>Delete
FIN


--
Ami calmant, J.P
Message modifié, 12 décembre 2017 - 23:33
Membre enregistré
628 messages
Popularité : +0 (16 votes)
Posté le 13 décembre 2017 - 09:47
Merci encore pour ta patience Jurassic Pork, j'ai regardé dans excel et effectivement c'est en étendue classeur, j'ai donc utiliser ton code.
Cependant j'ai une erreur d'exécution sur la ligne "ClearContent" : Range, le membre n'existe pas.
que puis je faire ?
Membre enregistré
628 messages
Popularité : +0 (16 votes)
Posté le 13 décembre 2017 - 09:49
Merci Charly Cando, je vais acheter la maj 23 avant la fin d'année, mais ça m'apportera quoi ?
il y a des nouvelles fonctions pour Excel ? Mon client utilise Excel depuis très longtemps, des tonnes de tableaux croisés dynamiques,
il ne va surement pas passer au tableur interne de Windev, même si il est très bien. c'est de cela que tu voulais parler ?
Membre enregistré
962 messages
Popularité : +183 (185 votes)
Posté le 13 décembre 2017 - 17:16
hello,
regarde bien je réutilise un activeSheet pour le range>>clearcontents avec un activeWorkbook cela ne fonctionne pas

--
Ami calmant, J.P
Membre enregistré
628 messages
Popularité : +0 (16 votes)
Posté le 13 décembre 2017 - 17:22
ben .. oui, j'ai recopié ton code et j'ai l'erreur
Membre enregistré
962 messages
Popularité : +183 (185 votes)
Posté le 14 décembre 2017 - 07:01
hello,
tu peux essayer alors :
nomPlage est une chaîne
nbPlages est un entier
i est un entier = 0
nbPlages = xl>>ActiveWorkBook>>Names>>Count
//Trace(nbPlages)
POUR i = 1 A nbPlages
nomPlage = xl>>ActiveWorkBook>>Names[i]>>Name
//Trace(nomPlage)
xl>>ActiveWorkBook>>Names[i]>>RefersToRange>>ClearContents
xl>>ActiveWorkBook>>Names[i]>>RefersToRange>>Delete
FIN


--
Ami calmant, J.P
Membre enregistré
628 messages
Popularité : +0 (16 votes)
Posté le 14 décembre 2017 - 09:24
ça ne fonctionne pas, j'ai un message d'erreur sur la ligne : xl>>ActiveWorkBook>>Names[i]>>RefersToRange>>ClearContents
"en tentant de lire la propriété <RefersToRange>... le membre demandé n'existe pas"
Membre enregistré
628 messages
Popularité : +0 (16 votes)
Posté le 14 décembre 2017 - 09:34
Pourtant lorsque j'active les traces que tu as commenté, j'ai bien le nombre de plages et le nom des plages
Membre enregistré
962 messages
Popularité : +183 (185 votes)
Posté le 14 décembre 2017 - 11:50
peut être un pb avec la version d'Excel : Moi j'utilise la version 2010

--
Ami calmant, J.P
Membre enregistré
628 messages
Popularité : +0 (16 votes)
Posté le 14 décembre 2017 - 12:13
version 2007
Membre enregistré
962 messages
Popularité : +183 (185 votes)
Posté le 14 décembre 2017 - 17:12
tu as quelle version de Windev ?
sinon tu peux essayer de mettre des parenthèses sur clearcontents et delete :
xl>>ActiveWorkBook>>Names[i]>>RefersToRange>>ClearContents()
xl>>ActiveWorkBook>>Names[i]>>RefersToRange>>Delete()

en windev 16 et excel 2010 les deux syntaxes (avec ou sans parenthèse) passent

--
Ami calmant, J.P
Membre enregistré
628 messages
Popularité : +0 (16 votes)
Posté le 14 décembre 2017 - 17:39
en fait j'ai codé ça :
r est un entier
Nb est un entier = xl>>ActiveWorkBook>>Names>>Count
POUR r = 1 A Nb
QUAND EXCEPTIONEXCEPTION DANS
xl>>range(xl>>ActiveWorkBook>>Names[r]>>Name)>>Delete
FAIRE
//
FIN
FIN

et ça fonctionne bien
Membre enregistré
628 messages
Popularité : +0 (16 votes)
Posté le 14 décembre 2017 - 17:40
je suis en windev 22,
ou peut on trouver toutes les propriétés (ole excel) que l'on peut utiliser dans windev ?
Membre enregistré
962 messages
Popularité : +183 (185 votes)
Posté le 14 décembre 2017 - 22:42
par exemple pour excel 2007 pour voir tous les objets tu peux aller sur :
https://msdn.microsoft.com/en-us/library/bb149081(v=office.12).aspx

et naviguer dans les objets pour voir les méthodes et propriétés

--
Ami calmant, J.P
Message modifié, 14 décembre 2017 - 22:43
Membre enregistré
628 messages
Popularité : +0 (16 votes)
Posté le 15 décembre 2017 - 09:28
Merci beaucoup pour ta patience et ton aide