VBA Excel - pb de boucle

Calvin -  
 Calvin -
Bonjour,

Voilà, c'est sans doute relativement simple mais je débute et je ne m'en sors pas.
A partir du code suivant, les valeurs présentes dans ma colonne E doivent commencer par "0" si elles sont inférieures à 10. Les autres restent sur 2 chiffres. Dès que la cellule est vide, fin de la boucle....J'introduis donc une boucle mais cela ne fonctionne pas.
Ainsi 2 doit devenir 02, etc... Je ne passe pas par un format de cellule personnalisé car je dois récupérer les valeurs sur 2 chiffres. Ce n'est donc pas qu'un affichage apparent..

Voici la partie de code en question :

ligne = 1
finboucle = 0
Columns("E:E").Select
Selection.NumberFormat = "@"
While finboucle <> 1
ligne = ligne + 1
If (Cells(ligne, 5).Value < 10) Then
Cells(ligne, 5).Value = "0" + Cells(ligne, 5).Value
End If
If Cells(ligne, 5).Value = "" Then
finboucle = 1
End If
Wend

Et bien cela me renvoie :
"Erreur d'application 1004
Erreur définie par l'application ou par l'objet"
La ligne surbrillée étant : If (Cells(ligne, 5).Value < 10) Then


Un grand merci par avance pour votre aide précieuse.,
A voir également:

3 réponses

Fourtis Messages postés 248 Date d'inscription   Statut Membre Dernière intervention   14
 
Je me demande (je ne suis absolument pas sûr, mais .... j'ai déjà eu des prob dans ce genre) si tu ne mélanges pas du format texte avec du numérique . Si j'ai bien compris ce que tu veux faire .... Les "leading zeroes" sont difficiles à gérer en XL . Soit tu mets les cellules en format texte et les formules ne se calculent plus (même les formules de texte), soit tu mets du numérique et on n'a pas ces zéros en tête de nombre !

Bon je sais tu n'es pas avancé avec ça mais au moins tu n'es pas seul ! ;-))
0
Calvin
 
Merci Fourtis,

lol..c'est vrai mais je crois avoir maintenant la solution à mon énigme (c'était pas la quadrature du cercle mais pour moi et à mon niveau un peu...).

En tout cas , c'est chouette de m'aider.

Bonne soirée
0
Utilisateur anonyme
 
Bonjour,

Procéder comme suit :

Option Explicit

Sub Test()
    Dim ligne As Long, finboucle As Long

    ligne = 1
    finboucle = 0
    Columns("E:E").Select
    Selection.NumberFormat = "@"
    
    While finboucle <> 1
        If (Cells(ligne, 5).Value < 10) Then
            Cells(ligne, 5).Value = "0" & Cells(ligne, 5).Value
        End If
        If Cells(ligne + 1, 5).Value = "" Then
            finboucle = 1
        End If
        ligne = ligne + 1
    Wend

End Sub
'

Lupin
0
Calvin
 
Merci Lupin,

Cela fonctionne. Un grand grand merci car je tournais en rond depuis quelques heures.

Au plaisir
0
gbinforme Messages postés 14946 Date d'inscription   Statut Contributeur Dernière intervention   4 724
 
bonjour

Si tu remplaces le + qui concerne le numérique par & qui concerne le texte cela devrait fonctionner :
Cells(ligne, 5).Value = "0" & Cells(ligne, 5).Value 

Cependant tu n'as pas besoin de cette modification pour récupérer la valeur sur 2 caractères.
deux = Format(cellule, "00")

Avec ce code ta variable deux sera en texte sur 2 caractères avec le zéro initial si nécessaire.

edit :
Bonjour Lupin.A : tu as été plus rapide que moi !

avec un petit coucou amical à la froidure qui est aussi présente ici en France.
0
Calvin
 
Merci à toi,

Je crois bien que Lupin a trouvé la clé de mon problème dans son code.

Encore merci pour votre aide.


Bonne soirée
0