Tom's Guide > Forum > Programmation > [calcul] [macro] annalyser le contenu d'une cellule

[calcul] [macro] annalyser le contenu d'une cellule

Forum Programmation : [calcul] [macro] annalyser le contenu d'une cellule

TomsGuide.com : 800 000 inscrits répondent à toutes vos questions high-tech et informatique. Pour obtenir de l'aide, inscrivez-vous gratuitement !
Mot :    Pseudo :           
 

salut,

Je travail sur une suite de code de 6 nombres séparés par un espace. chacun des codes est contenu dans une seule cellule.
ex :
3 10 16 23 25 37
6 26 35 39 46 48
2 4 11 13 16 19


Je cherche à faire une macro qui analyserait le contenu de chaque cellules et qui pourrait me supprimer tous les codes se terminant par un nombre choisi. Par ex: le nombre 37

Si quelqu'un aurait une indication à me donner, ce serait vraiment sympa, parce que cela ne doit pas être très difficile, mais comme je ne connait pas grand chose en programmation ni aux commandes existantes, cela m'avancerait considérablement dans mon travail.

Merci infiniment.

Luxcibel

Liens sponsorisés
Inscrivez-vous ou connectez-vous pour masquer ceci.

Salut,
Quel logiciel utilises-tu? OpenOffice, Excel?


Pour Excel, tu pourrais par exemple faire une fonction/routine VBA, qui prend en paramètre ton nombre sous forme de texte, et la zone sur laquelle tu veux travailler;

Tu fais une boucle (for each) sur cette zone;

Pour chaque case de la zone, tu compares la valeur de la case à ton nombre (opérateur like);

Si le code est de la bonne forme, tu supprime la ligne (je suppose que c'est ce que tu veux), sinon tu ne fais rien;

tu passes à la ligne suivante.


Après, tu appelles cette fonction depuis une autre fonction, qui se charge de lui passer les paramètres, par exemple à l'aide d'un inputbox et de la sélection faite sur la feuille de calcul par l'utilisateur.

En tout cas c'est l'idée qui me vient comme ça.
La syntaxe exacte dépend de ton logiciel, donc il faut plus d'infos.


Message édité par Rakipu le 04-10-2008 à 18:00:40
Répondre à Rakipu

Merci beaucoup pour cette info, ça me donne déjà une piste de recherche.
il s'agit d'openoffice calc.

Je ne sais pas si j'ai bien tout compris, mais j'ai essayé ceci :
- j'ai débuté l'enregistrement d'une macro.
- je suis allé dans une cellule et j'ai sélectionné la dernière valeur.
- j'ai stoppé l'enregistrement.

En faisant cela, je suis partie du principe qu'openoffice me générerait un début de code utilisable. je n'ai plus qu'à insérer une ligne de comparaison de valeur par rapport à cette mémoire de valeur et puis, si c'est inférieur à 37, je supprime la cellule. je fais une boucle pour que tous ça soit répété sur chacune des cellules.

voici le code que cela m'a donné :

Code :
  1. sub XX
  2. rem ----------------------------------------------------------------------
  3. rem define variables
  4. dim document  as object
  5. dim dispatcher as object
  6. rem ----------------------------------------------------------------------
  7. rem get access to the document
  8. document  = ThisComponent.CurrentController.Frame
  9. dispatcher = createUnoService("com.sun.star.frame.DispatchHelper" )
  10. rem ----------------------------------------------------------------------
  11. dim args1(0) as new com.sun.star.beans.PropertyValue
  12. args1(0).Name = "ToPoint"
  13. args1(0).Value = "$A$1"
  14. dispatcher.executeDispatch(document, ".uno:GoToCell", "", 0, args1())
  15. rem ----------------------------------------------------------------------
  16. dim args2(0) as new com.sun.star.beans.PropertyValue
  17. args2(0).Name = "ToPoint"
  18. args2(0).Value = "$A$1"
  19. dispatcher.executeDispatch(document, ".uno:GoToCell", "", 0, args2())
  20. end sub



donc là, j'ai rajouté la ligne suivante :

Code :
  1. if [args2(0).Value = 20]then [dispatcher.executeDispatch(document, ".uno:Delete", "", 0, args2())]



Sauf que ça ne marche pas.
pourrais-tu me dire se qui cloche ?

merci beaucoup

Répondre à luxcibel

Hmm... Le problème, c'est que je ne connais pas le langage utilisé par OpenOffice.
En regardant juste le code, je pense que args2(0).Value contient juste "$A$1" (du texte en somme) et ne fait donc pas référence à la cellule. Donc tester if [args2(0).Value = 20] ne peut pas fonctionner.

Si tu te sens d'attaque pour étudier leur langage, leur documentation a l'air pas mal:
http://fr.openoffice.org/Documenta [...] ation.html
http://wiki.services.openoffice.or [...] t_basic_fr
Mais bon, c'est vraiment histoire d'avoir l'impression de servir à quelque chose, parce que là je ne peux pas trop t'aider. Il faudrait ou bien que tu apprennes au moins en partie le langage (ça prend du temps qu'on a pas forcément, surtout pour un besoin ponctuel), ou alors qu'un autre membre du forum qui le maîtrise t'apporte son aide.
Peut être même qu'il existe une fonctionnalité toute simple d'OpenOffice qui fasse ça directement, mais je ne la connais pas.

Répondre à Rakipu

Merci beaucoup pour les liens, ça me sera de toutes façons utile...

sinon j'ai trouvé la macro pour Excel, ça marche très bien:

Code :
  1. Sub supp()
  2. Dim r As Long, c As Range
  3. r = InputBox("Supprimer si nombre terminal =", "Supprimer cellules dans la sélection" )
  4. For Each c In Selection
  5. If Right(c.Value, Len(r) - 1) = " " & r Then c.Value = ""
  6. Next c
  7. End Sub



Merci à Eriiic

Répondre à luxcibel
Tom's Guide > Forum > Programmation > [calcul] [macro] annalyser le contenu d'une cellule
Aller à :

Il y a 585 utilisateurs connus et inconnus. Pour voir la liste des connectés connus, cliquez ici.

Attention

Vous allez répondre sur un sujet resté inactif pendant plus de 6 mois.
Assurez-vous d'apporter des éléments nouveaux à la discussion avant de poursuivre.

Répondre Annuler
Liens