Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

thomlau

XLDnaute Occasionnel
Bonjour à toutes et à tous.

Dans le fichier ci-joint, en colonne A, il y a des nombres qui sont stockés sous forme de texte car ceux-ci ont étés copiés dans une base de données quelconque.
Sur la feuille de mon classeur, il peut y avoir des données de la ligne 12 à la ligne 2010 et ce, jusqu'en colonne R.

Existe t'il une macro qui ferait un collage spécial "multiplication X 1" des données stockées au format texte si la colonne A est non-vide?

D'avance merci.
 

Pièces jointes

Re : Tâche automatisée

Bonjour à tous

On dirait que je te dérange Jeanpierre, non ?

Pourquoi m'avoir conseiller de zipper mes fichiers, qui biensur n'exèdent pas 50 ko, sinon ils ne seraient pas uploader, mais qu'un des membres les plus actif de ce merveilleux forum le fasse, là on n'ose dire mot.

De plus la charte du forum exige un minimum de courtoisie et de compréhension envers les nouveaux, pourtant il me semble, peut-être que je me trompe, que ma présence ici te dérange.

J'ai bien vu ton nouveau fichier, bien plus tard....???? pourquoi ce délai, je ne sais pas....
Bien plus tard = 25 mn

Maintenant, lors de tes dépôts de fichier, merci de les ZIPPER, moins lourd sur le serveur du forum...

OK, re...donc, pour finir

A bon entendeur
 
Re : Tâche automatisée

Re,

Non, rassures-toi, mais c'était pour préciser qu'il faut indiquer les choses....

Le, ça marche pas, tout le monde l'utilise, mais on ne sait jamais ce qui ne marche pas, alors que c'est la seule chose intéressante.... pour solutionner au meiux et au plus vite.... Il faudrait arrêter de faire du nombrilisme comme souvent, certains, le font....

C'est un peu comme si j'appelle mon garagiste en lui disant ma voiture marche pas...
-Ah bon, que se passe t'il...?
-Ben rien...
-Quand vous démarrez, y-a-t'il un bruit....
-Ben non....
-Essayez de la démarrer....
-Oui, je veux bien mais avec quoi, j'ai pas les clefs...

Ce petit texte rapide pour de dire pourquoi on peut tourner en rond

J'espère que tu vas prendre une minute pour bien lire ce que j'ai dit....
Mon intervention n'était qu'une précision... OK.... Merci

A te lire.

Jean-Pierre

Edit : Pour le reste, aucun reproche sur le respect de la charte, me semble-t'il, sinon, d'autres ou moi-même te l'aurions dit... Alors Pas de panique
 
Dernière édition:
Re : Tâche automatisée

re

merci thomlau de ta precision

pour accelerer tu peux modifier comme suit

Code:
Sub transformation()
For Each cel In ActiveSheet.UsedRange 
If cel.Value <> "" And isNumeric(cel.Value) Then cel.Value = CDbl(cel.Value)
Next cel
End Sub

Quant a mon inverse , rassures-toi il m'a aussi fait la leçon a propos du Zipp
Il donne d'ailleurs au moins autant de leçons que de solutions
je pense qu'il sera content pour cette fois puisqu'il n'y a pas de fichier attaché
 
Re : Tâche automatisée

Salut,

Perso ce que je fais quand j'ai des données numériques qui ne sont pas reconnues comme tel, j'inscris "1" dans une cellule quelconque. Je fais copier de cette cellule puis je sélectionne mon tableau et je fais collage spécial en choisissant multiplication.
Toutes mes données sont ainsi transformées en numérique.
 
Re : Tâche automatisée

Re tous et sans animosités, ce que notre ami semble me reprocher....

Pour te saluer PierreJean, les occasions sont rares et elles le seront encore plus dans un proche avenir....

Comme tu as posté presqu'en même temps que moi, revois au dessus.

C'est vrai que le ça marche pas m'agacce quelquefois, alors qu'il est simple d'en expliquer le pourquoi...

C'était mon petit message à Thomlau et surtout sans vouloir l'offencer (pour avancer).... sinon, je ne sais plus comment préciser ce genre de chose... comment le dire.... ou bien, alors, je m'exprime mal.... possible...

Allez, bonne soirée tous et bon week-end qui approche pour les heureux travailleurs...

Jean-Pierre
 
Re : Tâche automatisée

Bonjour Hussard, re au forum.

Ce que tu me conseille Hussard, je sais le faire en macro, via l'enregistreur de macro, mais je l'ai spécifié à l'intérieur d'un fichier joint et donc tu ne l'as surement pas vu. La prochaine fois, je stipulerais tout sur ce forum.

pierrejean, ça fonctionne nikel, bravo.

Merci et bon week-end à tous.

A bientôt.
 
Re : Tâche automatisée

Bonjour à toutes et à tous.

J'ai finalement adopté la solution que m'a généreusement proposé pierrejean. Elle fonctionne bien, mais il faut compter une vingtaine de secondes pour l'éxécution. C'est compréhensible car il y a 2000 lignes à traiter.
Quelqu'un a t'il une solution pour afficher une barre de progression pendant l'éxécution de cette macro?
J'ai fais des recherches sur ce forum avant de poster et je ne trouve pas éxactement ce que je souhaiterais.

D'avance merci.

A bientôt
 
Re : Tâche automatisée

bonjour a tous

teste comme ceci:

Code:
Sub transformation()
Application.Screenupdating=false
For Each cel In ActiveSheet.UsedRange 
If cel.Value <> "" And isNumeric(cel.Value) Then cel.Value = CDbl(cel.Value)
Next cel
Application.screenupdating=true
End Sub

ps: une barre de progression ralentirait encore
mais si tu y tiens je regarderais
 
Re : Tâche automatisée

Re

Pierrejean, merci pour ta contribution.
Je veux bien tester le temps d'éxécution avec une barre de progression.
Il est vrai que cette barre aurait un sacré avantage...je m'explique.

Le classeur sur lequel je travaille va se trouver sur un réseau d'entreprise, donc plusieurs utilisateurs auront accès à ce fichier.

Pendant que la macro s'éxécute, ils ne vont pas savoir pourquoi pendant un certain temps le PC va ramer, même si je l'explique. Ils vont croire qu' Excel est planté.
Donc, à mon avis, une barre de progression explicative s'impose.

Merci encore.
 
Re : Tâche automatisée

Bonjour thomlau, pierrejean, jeanpierre, Hussard

En passant par un tableau, la conversion est quasi instantanée.

Code:
Sub Tranforme_Nombre()

Dim tablo, i As Long, k As Byte

With Sheets("Feuil1")
  tablo = .Range("A12:F" & .Range("A65536").End(xlUp).Row)
      For i = 1 To UBound(tablo, 1)
          For k = 1 To UBound(tablo, 2)
             If tablo(i, k) <> "" And IsNumeric(tablo(i, k)) Then tablo(i, k) = tablo(i, k) * 1
          Next
      Next
  .Range("A12:F" & .Range("A65536").End(xlUp).Row) = tablo
End With

End Sub

Testé sur 2979 lignes

Bon Week_End
 

Pièces jointes

Re : Tâche automatisée

Bonjour bqtr, bonjour le forum.

Je viens de voir ta réponse bqtr, un peu tardivement je le conçois.
Le code que tu me propose fonctionne admirablement bien et la macro s'éxécute instantanément. C'est le top.
Donc plus besoin de progressbar...

J'ai seulement modifié un peu le code de bqtr, comme j'ai plusieurs feuilles dans mon classeur...
Code:
Sub Tranforme_Nombre1()

Dim tablo, i As Long, k As Byte

With ActiveSheet
  tablo = .Range("A12:R" & .Range("A2010").End(xlUp).Row)
      For i = 1 To UBound(tablo, 1)
          For k = 1 To UBound(tablo, 2)
             If tablo(i, k) <> "" And IsNumeric(tablo(i, k)) Then tablo(i, k) = tablo(i, k) * 1
          Next
      Next
  .Range("A12:R" & .Range("A2010").End(xlUp).Row) = tablo
End With

End Sub

Il n'y a que Sheets("Feuil1") qui est devenu ActiveSheet ainsi que Range("A65536") qui est devenu Range("A2010").

Voilà. Encore merci à tous ceux qui ont pu m'éclairer de quelque façon que ce soit. Bravo à tous.
Bonne fin de WE et à bientôt.
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

Réponses
48
Affichages
973
Réponses
5
Affichages
542
Réponses
3
Affichages
316
Retour