Transformer le contenu d'une cellule en VBA

[Résolu/Fermé]
Signaler
Messages postés
223
Date d'inscription
dimanche 23 décembre 2007
Statut
Membre
Dernière intervention
12 mai 2020
-
Messages postés
223
Date d'inscription
dimanche 23 décembre 2007
Statut
Membre
Dernière intervention
12 mai 2020
-
Bonjour,

Mon problème est assez simple et j'espère que vous pourrez m'aider.
J'ai un tableau rempli de valeurs du type "24.5165" que je voudrais transformer en "25%", grâce à une macro.

Pour l'instant, j'ai changé le type de format de mes cases en faisant cela :

Dim dercol20 As Byte 
Dim derline20 As Byte 
dercol20 = Range("B4").End(xlToRight).Column 
derline20 = Range("B4").End(xlDown).Row 

Dim k20 As Byte 
Dim h20 As Byte 

For k20 = 6 To dercol20 - 1 
For h20 = 4 To derline20 
Cells(h20, k20).Select 
With Selection 
.NumberFormat = "0" 
End With 
Next 
Next


Ce que je pensais faire après c'était quelquechose du style
Cells(h20,k20).Value = Cells(h20,k20).Value + "%" 


Cependant, ça ne marche pas et je pense que c'est notamment parce que maintenant mon format de case est défini comme un nombre.

Qu'en pensez-vous ?
Comment je peux faire ?

Merci d'avance pour votre aide

3 réponses

Messages postés
4239
Date d'inscription
lundi 20 avril 2009
Statut
Contributeur
Dernière intervention
12 septembre 2014
1 284
Bonjour,

j'ai essayé avec le signe + ça n'a pas marché, mais essaie plutôt avec le signe &, c'est normalement le signe de concaténation en VBA.

Cordialement.
Messages postés
223
Date d'inscription
dimanche 23 décembre 2007
Statut
Membre
Dernière intervention
12 mai 2020
8
Effectivement, le 1 marche mieux ! Merci déjà

Mais je ne suis pas sorti d'affaire.
Le problème c'est qu'à la place de 24.51 il va m'écrire 24.51% et non 25%.

J'ai essayé Cells(a,b).Value=Int(Cells(a,b).Value & "%" mais j'ai une erreur (incompatibilité de type)...

Une idée ?

Merci
Messages postés
4239
Date d'inscription
lundi 20 avril 2009
Statut
Contributeur
Dernière intervention
12 septembre 2014
1 284
Problème de parenthèses ^^
Cells(a,b)=Int(Cells(a,b)) & "%"


conviendra mieux.

D'aileurs, j'ai appris il y a pas si longtemps que ça qu'écrire Cells(a,b).Value et Cells(a,b) donne le même résultat car ".Value" est la propriété par défaut affectée à Cells ou à Range.
Messages postés
223
Date d'inscription
dimanche 23 décembre 2007
Statut
Membre
Dernière intervention
12 mai 2020
8
Au temps pour moi, ça fonctionne

Il faut supprimer la première partie de code que j'avais donné.
C'est à dire qu'il ne faut pas transformer le format de la cellule avant.
En fait c'est tout à fait logique...

Merci chossette en tous cas !

Sujet résolu