Remplacer chiffres par texte

Bonjour à tous,

j'aurai besoin d'un coup de pouce sur le code suivant :

Sub Crea ()

Dim lig As Long
Dim F As Integer
Dim i As Integer
While Not IsEmpty(Cells(lig, 1))
lig = lig + 1
Wend
lig = lig - 1

F = 3
For i = 3 To lig
If Cells(F, 18).Value = 1 Then
Activecells.Value = "Commande"          'colonne état d'avancement
    If Cells(F, 18).Value = 0 Then
    Activecells.Value = "Annulé"

F = F + 1
Else
Activecells.Value = "Étude"
End If
End If
Next i

End Sub 

le but est de remplacer les valeurs 1,0 ou rien par du texte en fonction de la valeur inscrite dans la cellule, seulement rien ne se passe.

Quelqu'un aurait-il une idée de comment résoudre ce problème ?

merci,

Nicolas

Bonjour,

sur base de ton code, il est difficile de déduire ce que tu veux faire précisément. il y a en tout cas une faute de syntaxe remplace activecells par activecell

la variable F n'est pas nécessaire tu peux la supprimer et la remplacer par i dans les instructions cells(F,...

Bonjour,

Je viens de suivre tes instructions, j'en arrive là :

Dim L As Integer
Dim wbk_distant As Workbook
Dim MyString, NDossier, filename, NIndice As String
Dim celluletrouvee As Range
Dim lig As Long
Dim i As Integer

lig = 3

While Not IsEmpty(Cells(lig, 1))
lig = lig + 1
Wend
lig = lig - 1

i = 3
For i = 3 To lig
If Cells(i, 18).Value = 1 Then
ActiveCell.Value = "Commande"          'colonne état d'avancement
    If Cells(i, 18).Value = 0 Then
    ActiveCell.Value = "Annulé"

i = i + 1
Else
ActiveCell.Value = "Étude"
End If
End If
Next i

Pour être plus précis dans ce que je veux faire:

Dans la colonne R il y a trois possibilités 1, 0 et rien

je veux que les 1 soient remplacés par Commande

le 0 annulé

et le vide par étude

Merci,

Bonjour,

Indente ton code, et ça t'aidera à savoir ce que tu écris !

    For i = 3 To lig
        If Cells(i, 18).Value = 1 Then
            ActiveCell.Value = "Commande"
            If Cells(i, 18).Value = 0 Then
                ActiveCell.Value = "Annulé"
                i = i + 1
            Else
                ActiveCell.Value = "Étude"
            End If
        End If
    Next i

A noter que de 3 à lig, aucune cellule n'a la valeur Empty (vide) [boucle précédente]

A suivre ce code on ne peut que trouver "Étude" dans la cellule active, dont on ne sait quelle elle est mais ce qui est sûr c'est qu'elle demeure toujours la même...

bonjour,

bonjour MFerrand,

si j'ai bien compris

    Dim L As Integer
    Dim wbk_distant As Workbook
    Dim MyString, NDossier, filename, NIndice As String
    Dim celluletrouvee As Range
    Dim lig As Long
    Dim i As Integer

    lig = 3
    While Not IsEmpty(Cells(lig, 1))
        lig = lig + 1
    Wend
    lig = lig - 1
    For i = 3 To lig
        If Cells(i, 18).Value = "" Then
            Cells(i, 18).Value = "Étude"
        ElseIf Cells(i, 18).Value = 1 Then
            Cells(i, 18).Value = "Commande"
        Else
            Cells(i, 18).Value = "Annulé"
        End If
    Next i

H2sO4,

Dans l'idée c'est tout à fait ça, mais ça ne marche pas du tout :/

MFerrand Bonjour,

Je ne comprends pas bien ce que tu veux dire, j'aimerai au moins que l'on ne trouve qu'Étude dans chaque case, ça voudrait dire qu'au moins quelque chose marche dans cette partie du code :/

Re, Salut h2so4 !

Faut apprendre à lire ton code : dans ta boucle, à chaque ligne tu testes la cellule en R : si elle a la valeur 1, tu testes alors si elle a la valeur 0 (qu'elle ne peut avoir, puisque c'est 1), on se trouve alors dans le cas Else de cette condition incluse : et dans ce cas tu mets : "Etude" (qui remplacera le "Commande" mis en raison du 1), dans la cellule active.

Si la valeur n'est pas 1, tu ne fais rien.

Donc, si dans ta colonne tu n'as aucun 1 tu ne mettras rien nulle part, si tu as au moins un 1, tu mettras "Etude"...

En outre tu le mets dans la cellule active, dont aucune mention ne figure dans le code jusque là et qui peut par conséquent être n'importe où, mais tu ne la déplaces pas donc elle sera toujours identique à elle-même, où qu'elle soit, et au final tu auras donc "Etude" dans une seule cellule dont la position est indéterminée (si un 1 au moins) ou rien nulle part (si aucun 1).

Cordialement.

H2sO4,

Dans l'idée c'est tout à fait ça, mais ça ne marche pas du tout :/

j'ai fait des tests sur ce que je pensais être ton fichier (comme tu ne veux pas nous le mettre).

mets-nous ton fichier ainsi on arrêtera de perdre son temps.

merci

7tableau-laure.xlsm (32.67 Ko)

Voilà le fichier,

bonjour,

voici le résultat de la macro exécutée sur ton fichier, je n'ai exécuté que la partie de la macro pour laquelle tu as demandé de l'aide. et ceci me semble fonctionner correctement.

je ne peux pas exécuter toute la macro car je n'ai pas les éléments pour le faire.

8tableau-laure.xlsm (31.38 Ko)

Bonjour Nicolas29,

Je te retourne ton fichier Excel modifié :

5tableau-laure.xlsm (31.59 Ko)

Je te laisse le tester ; merci de me donner ton avis.

Cordialement,

dhany

Ca ne fonctionne pas quand je la lance avec l'intégralité de la macro ..

re-bonjour,

essaie ceci

With ThisWorkbook.Sheets(1)
    lig = 3
    While Not IsEmpty(.Cells(lig, 1))
        lig = lig + 1
    Wend
    lig = lig - 1
    For i = 3 To lig
        If .Cells(i, 18).Value = "" Then
            .Cells(i, 18).Value = "Étude"
        ElseIf .Cells(i, 18).Value = 1 Then
            .Cells(i, 18).Value = "Commande"
        Else
            .Cells(i, 18).Value = "Annulé"
        End If
    Next i
End With

Ca fonctionne parfaitement désormais merci !!

Quel est le changement que vous avez fait ?

bonjour,

j'ai indiqué sur quelle feuille se trouvaient les cellules en question.

with 
.cells()
end with

Malin, merci beaucoup pour l'aide et le temps passer.

Rechercher des sujets similaires à "remplacer chiffres texte"