Ajout d'une chaîne de caractère dans une cellule

Bonjour,

Je développe mes compétences en VBA (pour l'instant débutant ) mais je me retrouve confronté à un nouveau problème.

Dans les cellules d'une colonne, le contenu de chaque cellule est en format heure avec celle-ci affichée (exemple: 00:01:54 ou 00:01:54:70), le tout bien ordonné.

Je veux procéder à un comptage du contenu de ces cellules et ainsi, pour rendre le comptage possible, il faut d'abord remplacer ":" par "." et concaténer.

Voici mon programme:

Sub macro_5()

Dim a as Variant

Dim b as Variant

Dim Variable as Variant

Dim i as Long

Dim NbLignes as Long

NbLignes = Application.CountA(Range("A:A"))

b = ":00"

b = Replace(b, ":", ".")

For i = 2 To NbLignes

Variable = Cells(i, 3)

Variable = Replace(Variable, ":", ".")

a = Len(Variable)

If a > 9 then

Variable = Variable & b

End If

Next

End Sub

Seulement, le problème est que Variable, dès lors que a > 9, renvoie un nombre à virgule flottante associé au format heure concaténé avec b.

Or je souhaite conserver le format heure et ajouter les dixièmes au besoin pour le comptage.

Exemple de ce que j'ai dans ma cellule:

6,23842592592593E-03:00

alors que je veux: 00:08:59:00 (qui était au départ 00:08:59).

Si quelqu'un pouvait m'éclairer, ça serait vraiment génial

Et désolé pour la longueur du message 😂

Bonjour,

Je veux procéder à un comptage du contenu de ces cellules et ainsi, pour rendre le comptage possible, il faut d'abord remplacer ":" par "." et concaténer.

pas compris ce qu'est ce comptage, ni la modification pour le rendre possible et encore moins la concaténation.

A quoi correspond le format : "00:01:54:70"

A+

En fait, 00:01:54:70 c'est une heure donnée.

Tu la lis "Minuit, une minute, 54 secondes et 70 dixièmes".

L'application que je veux faire consiste à rajouter 00 dixième (donc :00) si dans la cellule lue, l'heure affichée s'arrête aux secondes (par exemple 00:01:54 => 00:01:54:00). Comme ça, je peux compter toutes les cellules dans l'ordre sans négliger les cellules dont les heures ont un format sans les dixièmes.

Mais le truc, c'est que quand je veux ajouter les dixièmes (par concaténation ":00"), ça m'affiche le nombre à virgule flottante associé dans la cellule mais je n'en veux pas.

En d'autres termes, je veux:

Si 00:08:59:00 alors ok

Sinon si 00:08:59 alors ajouter ":00" => 00:08:59:00

Et ce, quelque soit l'heure.

Mais 00:08:59 s'affiche comme ça:

6,23842592592593E-03:00

alors que je le veux comme ça: 00:08:59:00

J'espère que ça aide à comprendre

J'espère que ça aide à comprendre

Pas spécialement ou vraiment pas.

Déjà que les calculs sur les heures ne sont pas évidents sur Excel, je ne comprend pas l'utilité de cette transformation pour compter quoi ?

Si on arrivait à transformer 00:01:54 en 00:01:54:00 Excel l'interprèterait comme du texte et non comme heure ?

Le code n'aide pas non plus ( d'autant qu'il ne fait pas de comptage):

si en Cells(i, 3) on a 00:01:54 au format heure

b = ":00"
b = Replace(b, ":", ".")  ' donc b=".00"

For i = 2 To NbLignes

Variable = Cells(i, 3)  ' variable =1,92708333333333E-2 numérique
Variable = Replace(Variable, ":", ".") '  variable ="1,92708333333333E-2" chaine caractères
a = Len(Variable)   ' a=20
If a > 9 then
Variable = Variable & b ' donc variable= "1,92708333333333E-2.00"
End If
Next

en sachant ce qu'il faut compter, ça aiderait peut_être à savoir ce qu'il y a lieu de faire.

Il y aurait peut-être ça qui pourrait éventuellement convenir :

For i = 2 To NbLignes
   Cells(i, 4) = Format(Cells(i, 3), "hh:mm:ss:00")
Next

si Cells(i, 3) = 00:01:54 (au format heure) dans Cells(i, 4) on aura 00:01:54:00 (au format texte)

si Cells(i, 3) = 00:01:54:52 (au format texte) dans Cells(i, 4) on aura 00:01:54:52 (au format texte)

A voir...

Bonjour,

le format pour les centièmes est : hh:mm:ss.00

Saisir : 00:01:54.70

Et si tu veux ajouter 1/10e :

=A2+"0:00:00.1"

Je ne vois pas trop l'intérêt de les modifier pour les compter (?!?)

Nombre de valeurs numériques :

=NB(A2:A20)

eric

Merci beaucoup AlgoPlus

Ça marche très bien!

Il fallait juste que je rajoute "Format"

Je suis content qu'il y ait des gens utiles et compétents pour progresser en VBA ici '-'

Merci tout le monde

???

As-tu remarqué que ce n'est pas un format numérique et que tu obtiens une chaine ?

Impossible de faire des calculs avec ensuite. Chose possible si tu utilises le format prévu par excel...

eric

Rechercher des sujets similaires à "ajout chaine caractere"