Macro

Résolu/Fermé
Louis3999 Messages postés 7 Date d'inscription vendredi 5 juin 2015 Statut Membre Dernière intervention 16 juin 2015 - Modifié par Louis3999 le 5/06/2015 à 21:34
gbinforme Messages postés 14946 Date d'inscription lundi 18 octobre 2004 Statut Contributeur Dernière intervention 24 juin 2020 - 16 juin 2015 à 19:11
Excel 2013
Bonjour,
Je cherche une solution au problème suivant :
La boite ici-bas provient d'une requête sur le web, et elle est actualisée à l'ouverture du classeur. Les flèches indiquent le mouvement du jour. (La couleur indique la cellule visée)
jeudi, 4 juin 2015
Fermeture ? 1 175,06 ? 1 133,36 ? 1 310,33 ? 1 490,77 ? 2 293,28 ? 2 131,59
1 jour % -0,52% -1,26% -0,84% -0,51% -0,81% -0,60%



Dans leur état original Excel ne reconnait pas le format des cases avec les flèches, et impossible d'utiliser les données dans des calculs.
En double cliquant sur une cellule juste avant la flèche ont peu édité cette cellule, (enlever la flèche et faire « Enter »). J'ai alors un nombre utilisable dans Excel. Jusque-là tous va bien, sauf qu'il faut faire cette opération à chaque ouverture du classeur.
J'ai refait cette opération avec «Enregistrer une macro ». Voici ce que cela a donné...

Sub Format()'
' Format Macro'
' Touche de raccourci du clavier: Ctrl+x'
Range("M11").Select
ActiveCell.FormulaR1C1 = "2,293.28"
Range("M11").Select
End Sub

jeudi, 4 juin 2015
Fermeture ? 1 175,06 ? 1 133,36 ? 1 310,33 ? 1 490,77 2 293,28 ? 2 131,59
1 jour % -0,52% -1,26% -0,84% -0,51% -0,81% -0,60%







Cette macro génère la constante « 2 293,28 », donc à chaque fois que j'utilise cette macro j'obtiens toujours « 2 293,28 » et non pas la valeur actualisée.
Quel serait le code pour faire cette opération?
Merci de votre aide.


Cordialement
A voir également:

5 réponses

gbinforme Messages postés 14946 Date d'inscription lundi 18 octobre 2004 Statut Contributeur Dernière intervention 24 juin 2020 4 701
5 juin 2015 à 21:58
Bonjour,

C'est un peu loin, je ne vois pas tout ;-)

Je pense que tu peux essayer :
ActiveCell.FormulaR1C1 = ActiveCell.value 
0
Louis3999 Messages postés 7 Date d'inscription vendredi 5 juin 2015 Statut Membre Dernière intervention 16 juin 2015
5 juin 2015 à 22:24
Merci.
Je suis nouveau dans le domaine de Comment ça Marche. Si toutefois tu n'as pas reçu ma première réponse, j'ai reposé la question en utilisant une image Jpg. Il faut cliquer sur l'image pour la visionner. Pour ce qui est de ta première suggestion cela n'a pas fonctionné, la cellule est testée tel quelle était.
Merci encore.
0
gbinforme Messages postés 14946 Date d'inscription lundi 18 octobre 2004 Statut Contributeur Dernière intervention 24 juin 2020 4 701
5 juin 2015 à 22:44
Re
J'ai l'impression que tu es un peu perdu sur ce nouveau site pour toi.
Poster une image, pour un classeur cela n'apporte à peu près rien car si l'on veux tester une solution il faut tout ressaisir et l'on ne reproduira pas l'erreur.

Si tu pouvais nous mettre un exemple de structure des données, sans éléments personnels, avec les résultats souhaités expliqués clairement, se serait plus facile de t'aider.
Pour communiquer ton classeur tu le télécharges sur https://www.cjoint.com/ (mode d'emploi) et tu mets ici le lien obtenu.
0
Louis3999 Messages postés 7 Date d'inscription vendredi 5 juin 2015 Statut Membre Dernière intervention 16 juin 2015
15 juin 2015 à 20:09
Bonjour "gbinforme".
Désolé pour le délais, j'étais à la pêche...
Vous avez raison je suis nouveau dans l'usage de cette méthode.
J'ai créé un fichier sur cjoint.com.
Le lien est : https://www.cjoint.com/c/EFprw3XgEf3
Une explication du problème est inclus dans le classeur.

Espérant que j'ai fait ça comme il faut.
0
gbinforme Messages postés 14946 Date d'inscription lundi 18 octobre 2004 Statut Contributeur Dernière intervention 24 juin 2020 4 701
15 juin 2015 à 22:13
Bonjour Louis3999,

J'espère qu'elle a été bonne ! ;-)

Voilà, j'ai mis une macro qui enlève les flèches lorsqu'elles sont mises à jour sur la ligne 18, colonnes I à N.
C'est beaucoup plus facile de comprendre avec le classeur et l'on n'a pas le temps de voir les flèches.

https://www.cjoint.com/c/EFpua1fbQac

Bonne journée
0
Louis3999 Messages postés 7 Date d'inscription vendredi 5 juin 2015 Statut Membre Dernière intervention 16 juin 2015
16 juin 2015 à 01:57
Bonjour "gbinforme".

La macro fonctionne bien lorsqu'il est dans un classeur avec une seule feuille, par contre mon classeur contient 13 feuilles.
Cette macro devrait s'appliquée sur la feuille « iq30 » pour la zone «I18:N18 ».
Est-il possible de modifier la macro pour tenir compte de la feuille?


0
gbinforme Messages postés 14946 Date d'inscription lundi 18 octobre 2004 Statut Contributeur Dernière intervention 24 juin 2020 4 701
16 juin 2015 à 08:31
Bonjour Louis3999,

Il suffit de mettre la macro dans la feuille où elle doit fonctionner et en l'occurrence, dans la feuille « iq30 » ou bien tu mets celle-ci dans ThisWorkbook :
Option Explicit
Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal sel As Range)
If Sh.Name = "iq30" Then
    If Not Intersect(sel, Sh.[I18:N18]) Is Nothing Then
        Dim col As Integer
        Application.EnableEvents = False
        For col = 9 To 14
            Cells(18, col).Value = Mid(Cells(18, col).Value, 2)
        Next col
        Application.EnableEvents = True
    End If
End If
End Sub

Bonne journée
0

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

Posez votre question
Louis3999 Messages postés 7 Date d'inscription vendredi 5 juin 2015 Statut Membre Dernière intervention 16 juin 2015
16 juin 2015 à 17:22
Bonjour « gbinforme ».

Quelle belle journée!

Ta macro fonctionne bien.

« Bémol » : Mon classeur fait quelque chose comme 615 Ko. Pour éviter un changement inopportun toutes les feuilles sont protégées sauf la « iq30 ».
À l'ouverture de mon classeur je recevais une note disant que mon classeur était protégé.
J'ai donc désactivé l'actualisation de mon tableau de « iq30 » à l'ouverture du classeur.
J'ai créé une macro (tout seul cette fois) avec un bouton « Actualiser ». Lorsque je « click » sur le bouton, la feuille « iq30 » apparait, l'actualisions se fait et ta macro fait le reste. J'ai aussi mis dans la feuille « iq30 » un autre bouton avec une macro pour retourner à mon point initial.
Ce n'est probablement pas ce que tu aurais fait mais pour le moment avec deux « cliquer », le problème est réglé.
Si toutefois tu trouves ma méthode archaïque, tous tes commentaires seront appréciés.
Peut-être pourrais-tu me dire si je dois déclarer ce cas comme résolu.
Je voudrais aussi t'exprimer ma gratitude pour ton aide.
Merci.

Bonne journée.



0
gbinforme Messages postés 14946 Date d'inscription lundi 18 octobre 2004 Statut Contributeur Dernière intervention 24 juin 2020 4 701
16 juin 2015 à 19:11
Bonjour Louis3999,

Si toutefois tu trouves ma méthode archaïque,
Pourquoi serait-elle "archaïque", si elle te convient ?
En informatique, il y a de nombreuses façons de faire la même chose (comme par exemple un copier/coller : au clavier, à la souris, par clic droit, menus, etc) et chacun choisit ce qui lui convient et c'est très bien s'il a trouvé sa méthode.
J'avais choisi la macro événementielle car elle était plus facile à échanger mais le lancement à la demande parait tout à fait adapté.

À l'ouverture de mon classeur je recevais une note disant que mon classeur était protégé.
Si tu avais protégé toutes les autres feuilles, la protection du classeur n'était pas nécessaire et c'est sans doute ce qui provoquait le message.

ta macro fait le reste
Mais tu peux très bien intégrer ces lignes dans ton actualisation et supprimer la macro événementielle :
        Dim col As Integer
For col = 9 To 14
Cells(18, col).Value = Mid(Cells(18, col).Value, 2)
Next col

Merci en tout cas pour ce sympathique échange (depuis le Québec je suppose) et tu peux effectivement mettre en résolu si ton problème est effectivement réglé.
Au plaisir de te retrouver au fil du forum.
0