MACRO sur EXCEL

Résolu/Fermé
CBRiste31 Messages postés 63 Date d'inscription vendredi 8 août 2008 Statut Membre Dernière intervention 15 février 2025 - 17 sept. 2008 à 12:37
eriiic Messages postés 24603 Date d'inscription mardi 11 septembre 2007 Statut Contributeur Dernière intervention 15 décembre 2024 - 19 sept. 2008 à 19:30
Bonjour,


Peut-on, dans une macro, automatiser le fait de sélectionner la feuille 3 à la feuille 58 et convertir une plage de cellules (à chaque fois la même) en format numérique ("données"+"convertir").

En effet, cette plage est à chaque fois en format "texte" d'ou des formules qui ne fonctionnent pas.
Le but étant de faire réaliser la même opération pour des feuilles données, sans avoir à retranscrire la même formule pour chaque feuille dans VBA...

Merci d'avance...
A voir également:

6 réponses

Voilà :

Sub Poire()

Dim Workbook_book As Workbook
Dim Workbook_sheet As Worksheet

For Each Workbook_book In Application.Workbooks

For Each Workbook_sheet In Workbook_book.Sheets

For Each Cell In Workbook_sheet.Range("A1")

Cell.Value = 1

Next

Next

Next

End Sub


Modifie A1 par la cellule à modifier.
Et Cell.Value par ce que tu veux dedans.
0
CBRiste31 Messages postés 63 Date d'inscription vendredi 8 août 2008 Statut Membre Dernière intervention 15 février 2025 2
17 sept. 2008 à 18:16
Bonjour RailBird,

Merci pour ta réponse,

1ère question: Je ne veux pas mettre une valeur dans la cellule A1 de ton exemple, mais un format numérique

2ème question: sur chaque feuille, il y'a 2 plages de cellules distinctes à traiter (C6:C50 et I56:O56). Comment le retranscrire dans VBA ?

3ème: les 3 premières feuilles du fichier ne doivent pas être "traitée". Comment le retranscrire dans lVBA ?

Merci
-1
wilfried_42 Messages postés 907 Date d'inscription mardi 19 août 2008 Statut Contributeur Dernière intervention 8 décembre 2009 244
17 sept. 2008 à 12:55
bonjour
ce n'est pas compliqué, mais ce n'est peut etre pas utile, il y a d'autres option plus simple comme modifier la formule pour qu'elle fonctionne lol

exemple : j'ai dans la cellule A1 : 125,5 en format texte : faire A1 * 1 la modifie en format numerique
j'ai maintenant en A1 125.5 (le point est separateur de decimal (erreur donc, je veux une virgule)
formule à applique : =substitue(A1;".";",") * 1

tu peux donc modifier tes formules en fonction de ta cellule de reference
-1
CBRiste31 Messages postés 63 Date d'inscription vendredi 8 août 2008 Statut Membre Dernière intervention 15 février 2025 2
17 sept. 2008 à 18:03
Bonjour wilfried_42,

Merci pour ta réponse, mais je dois vraiment passer par une macro.

Il s'agit d'un fichier qu'on me transmettre ttes les semaines après qu'il ait été incrémenté avec les valeurs de la semaine écoulée. Le problème, c'est que le type de fichier est un peu "space"...En effet, à chaque fois qu'une nouvelle valeur y est ajoutée, la cellule dans laquelle elle a été saisie redevient du texte et donc les formules sont cassées.

D'ou l'idée de la macro: à chaque saisie d'une personne, les cellules redeviennet du "texte", mais avant d'enregistrer et fermer le fichier, lancer la macro sur une plage de cellules bien définie et la même sur les 52 feuilles, permettrait de tout rebasculer en format numérique et ttes les formules fonctionneraient.

Je peux le faire manuellement, feuille après feuille en cliquant dans "données" puis "convertir"

La formule retranscrite dans VBA est alors celle-ci:
Sheets("feuil4l").Select
Range("C6:C50").Select
Selection.TextToColumns Destination:=Range("C6"), DataType:=xlDelimited, _
TextQualifier:=xlDoubleQuote, ConsecutiveDelimiter:=False, Tab:=True, _
Semicolon:=False, Comma:=False, Space:=False, Other:=False, FieldInfo _
:=Array(1, 1)

Pour ne pas retranscrire la même formule pour les 51 autres feuilles, j'aimerais savoir si il exite une formule qui ordonne de faire l'action ci-dessus sur les 52 feuilles concernées.
Dernier point: les feuilles concernées vont de la feuille 4 à la 56. Les 3 premières ne doivent pas être "traitées" par la macro...

Si tu as une idée, je suis preneur...

Merci
-1
eriiic Messages postés 24603 Date d'inscription mardi 11 septembre 2007 Statut Contributeur Dernière intervention 15 décembre 2024 7 255
17 sept. 2008 à 14:23
Bonjour,

ou bien sans macro :
- sélectionner le 1er onglet
- shift-clic sur le dernier pour tous les sélectionner
- sélectionner ta plage et mettre le format (attention toute modif s'applique sur toutes les feuilles sélectionnées, y compris les saisies)
- cliquer sur un autre onglet pour défaire la sélection multiple

mais tu parles aussi de "données"+"convertir", ça c'est pour répartir un texte sur plusieurs cellules, pas pour changer un format de cellules...

eric

edit : après relecture je complète :
si le changement de format ne suffit pas, après la sélection multiple copier une cellule vide sur TOUTES les feuilles, puis clic-droit 'collage spécial', cocher 'addition'
-1
CBRiste31 Messages postés 63 Date d'inscription vendredi 8 août 2008 Statut Membre Dernière intervention 15 février 2025 2
17 sept. 2008 à 18:04
Bonjour Eric,

Merci pour ta réponse, mais j'ai besoin de la macro (voir ma réponse à wilfried)...

Si t'as une solution...je suis preneur.

Merci
-1
eriiic Messages postés 24603 Date d'inscription mardi 11 septembre 2007 Statut Contributeur Dernière intervention 15 décembre 2024 7 255
17 sept. 2008 à 19:12
essaie déjà ça dans un module :
Sub FormatNum()
    Dim ws As Worksheet
    For Each ws In Worksheets
        If ws.Index > 3 Then
            ws.Range("C6:C50", "I56:O56").NumberFormat = "General"
        End If
    Next ws
End Sub

Cette macro agit selon la position des feuilles comme tu l'as demandé, si tu en déplaces une des 3 1ères au delà elle ne sera pas traitée et une autre le sera à sa place.
Sinon s'il y a une particularité sur le nom des onglets qui permettrait de distinguer les 3 feuilles on peut tester dessus.
Regarde si remettre le format est suffisant ou s'il faut reprendre le contenu des cellules. Si c'est le cas il faudrait un exemple déposé sur cijoint.fr (et coller ici le lien fournit) pour voir ce qui force le format texte (espace ou...)
Une fois finalisée cette macro pourrait être mise dans Workbook_BeforeClose pour qu'elle soit appelée systématiquement sans action de l'utilisateur
eric
-1
eriiic Messages postés 24603 Date d'inscription mardi 11 septembre 2007 Statut Contributeur Dernière intervention 15 décembre 2024 7 255
17 sept. 2008 à 19:25
PS : en relisant ton post 4 je crois que c'est réellement 'convertir' que tu veux et non un soucis de nombre interprété en texte. Ma réponse n'est pas adaptée, désolé.
Précises quand même si tu répartis ton texte sur plusieurs cellules ou si tu utilises 'convertir' juste pour enlever les " ", et met un exemple réel de conversion (j'ai ça :.... et et je veux ça ça et ça dans telle et telle cellule)
-1
CBRiste31 Messages postés 63 Date d'inscription vendredi 8 août 2008 Statut Membre Dernière intervention 15 février 2025 2 > eriiic Messages postés 24603 Date d'inscription mardi 11 septembre 2007 Statut Contributeur Dernière intervention 15 décembre 2024
17 sept. 2008 à 20:30
Eric,

Voir le lien ci-dessous.

D4 doit trouver le nom correspondant au N° 50002145.
Si tu fais "données" + "convertir" en C4 , la fonction marche.
MAIS, dès que tu ressaisis le N° 50002145 en C4, le format change de nouveau en D4 et fonction kaput !!!


http://www.cijoint.fr/cjlink.php?file=cj200809/cijlEqGK1V.xls

Qu'est ce que tu en penses ?
-1

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
eriiic Messages postés 24603 Date d'inscription mardi 11 septembre 2007 Statut Contributeur Dernière intervention 15 décembre 2024 7 255
17 sept. 2008 à 20:58
ben c'est normal, ta 'liste' (enfin la ligne 11) est au format texte donc recherchev() doit rechercher un texte pour trouver qcq chose. Et lorsque tu saisis 50002145 excel l'interprete comme un nombre et ne trouve plus rien.
Si tes references comme 50002145 ne sont composées que de nombres et jamais de lettre met tout en format 'standard' ou 'nombre'.
Si tu peux y avoir des lettres ou bien si tu preferes rester en format texte dans ta liste remplace ta formule par =RECHERCHEV(TEXTE(C4,0),A11:B11,2,FAUX)

edit : au passage tu as plein de cellules au format texte et tu vas te faire pieger sur d'autres trucs... Selectionne toute ta feuille (clic sur le carré à l'intersection des n° de lignes et colonnes) et remet tout en format 'standard', reprend celles que tu veux absolument dans un autre format.
-1
CBRiste31 Messages postés 63 Date d'inscription vendredi 8 août 2008 Statut Membre Dernière intervention 15 février 2025 2
17 sept. 2008 à 21:13
Mon exemple est mauvais car quand je le transforme la cellule en "nombre", elle le reste àprès avoir saisi autre chose dedans.

Il faut que je retrouve le fichier d'origine qui m'a posé problème.
Encore une fois, dès que je resaisissais un nombre dans une cellule, celle-ci se remettait automatiquement en "texte".

Je remets la main dessus et je t'envois le lien...

Ce sera certainement demain, alors si tu as un peu de temps...Merci !
-1
eriiic Messages postés 24603 Date d'inscription mardi 11 septembre 2007 Statut Contributeur Dernière intervention 15 décembre 2024 7 255 > CBRiste31 Messages postés 63 Date d'inscription vendredi 8 août 2008 Statut Membre Dernière intervention 15 février 2025
17 sept. 2008 à 21:18
pas de soucis.
à plus...
-1
CBRiste31 Messages postés 63 Date d'inscription vendredi 8 août 2008 Statut Membre Dernière intervention 15 février 2025 2 > eriiic Messages postés 24603 Date d'inscription mardi 11 septembre 2007 Statut Contributeur Dernière intervention 15 décembre 2024
18 sept. 2008 à 20:18
Bonjour eric,

Je te joins un lien vers un fichier excel.


J'ai en partie trouvé l'explication (qui est toute bête):
Les feuilles du fichier d'origine étaent protegées.
Une fois la protection enlevée, il fallait que je fasse "donnée" + "convertir" pour que les cellules passent en format numérique. Par contre après une nouvelle saisie dans les mêmes cellules, le format changeait de nouveau.
Il faut en fait que je sélectionne toutes les cellules, que je les passe en format numérique, puis que je fasse "donnée" + convertir".

Par contre, tu verras que les cellules en couleur jaune sur les 2 onglets sont au format numérique et pourtant la recherche ne s'éffectue pas. Il faudrait encore faire l'opération "donnée"+ "convertir" sur C10 pour que ça fonctionne...mais pourquoi doit-on le faire puisqu'elle est déjà au format numérique ?

Enfin, je n'arrive pas à sélectionner le format de la cellule B3 de la 2ème feuille alors que celle-ci n'est pas protegée...

http://www.cijoint.fr/cjlink.php?file=cj200809/cijG8q2tYA.xls

Merci d'avance...
-1
eriiic Messages postés 24603 Date d'inscription mardi 11 septembre 2007 Statut Contributeur Dernière intervention 15 décembre 2024 7 255
18 sept. 2008 à 21:29
Bonjour CBRiste,

Feuil1 C10 est bien au format nombre mais la donnée est tjs au format texte.
Pour contrôler tes données supprime le centrage du texte et tu la verras s'aligner à gauche. Edite là en double-cliquant dessus puis entrée, elle devient numérique et s'aligne à droite, la formule remarche.
Pas eu de difficulté à modifier le format de C3 feuil2. De toute façon standard sur une saisie de chiffres sera bien interprété comme un nombre.
Et pour retransformer toutes tes valeurs en numérique tu as plus rapide que 'convertir', c'est remplacer 0 (zéro) par 0. Comme tu en as sur toutes tes féférences c'est bon
eric
-1
CBRiste31 Messages postés 63 Date d'inscription vendredi 8 août 2008 Statut Membre Dernière intervention 15 février 2025 2
19 sept. 2008 à 19:15
Hello eric,

Merci pour tes réponses.

Ce qui m'a induit en erreur au départ, c'est que je faisais "données" + "convertir" sur la plage de cellules, voyant que les formules ne fonctionnaient pas.
L'effet escompté qui était que la valeur dans la cellule devienne numérique se produisait, , mais si je resaisissais un nombre dans cette même cellule, le format repassait en texte.

En fait, Il faut d'abord que je sélectionne toutes les cellules concernées puis que je change le format de cellule en "nombre".
C'est seulement à ce moment que je resélectionne la plage et que je fais "donnée"+ "convertir".
(Je suis également obligé de passer par cette 2ème étape, sinon les cellules ou il y'avait déjà une valeur en ouvrant le fichier, restent en format texte.

En tout K, merci !
-1
eriiic Messages postés 24603 Date d'inscription mardi 11 septembre 2007 Statut Contributeur Dernière intervention 15 décembre 2024 7 255 > CBRiste31 Messages postés 63 Date d'inscription vendredi 8 août 2008 Statut Membre Dernière intervention 15 février 2025
19 sept. 2008 à 19:30
Bah, il faut se faire avoir plusieurs fois avant d'avoir le reflexe 'format ?' ;-)
Bonne continuation
eric
-1