Dim i As Long, X As Long
For i = 1 to 160
If Cells(i, 1).Value = "message" then
X = i + 1
MsgBox Range("B" & X).Value 'j'utilise la fonction range ici uniquement pour te montrer une autre methode mais cells(X,2).Value marche aussi
Exit For
End If
Next i
Tu ne peux pas utiliser une procédure qui écrit dans une cellule qui contient une formule pour modifier ce que la procédure écrit... C'est soit l'une , soit l'autre.
Dans le cas de ton code, tu n'as pas besoin d'inscrire quoique ce soit dans les cellules de la colonne C. Il faudrait que tu modifies cette ligne, par contre
<strike>cells(Y,3).value = cells(X,2).value</strike>
cells(Y,3).value = Replace(cells(X,2).value, "valeur ", "")
Ça va éliminer le mot "valeur " , incluant l'espace qui suit.
MPi²
Pour ceux qui programment sous Office, n'oubliez pas qu'il existe un forum dédié à ces applications VBA....... ICI
Voici le code du test que j'ai essayé et ça fonctionne bien (voir le résultat à la suite)
Sub MaSub()
Dim i As Long, X As Long, Y As Long
Y = 1
For i = 1 To 160
If Cells(i, 1).Value = "debut message" Then
X = i + 1
'tant que la cellule est differente de "fin message"
Do While Cells(X, 1).Value <> "fin message"
'mettre la valeur de la cellule (X,2) dans la cellule (Y,3)
Cells(Y, 3).Value = Replace(Cells(X, 2).Value, "\par A", "")
X = X + 1
Y = Y + 1
Loop
Exit For
End If
Next i
End Sub
Mais maintenant que j'arrive à lire la cellule(X,2) comment je pourrais l'affecter à une fonction existante sur excel comme {Remplacer(BX;1;7;"")} qui remplace un certain nombre de caracteres( ici 7) par d'autres caracteres (ici " ") et puis mettre la valeur dans une autre cellule donnée (C1 puis C2 ... ).
exemple: cells(X,2).value=(valeur 50)
Remplacer(BX;1;7;"") ==> 50 (BX est la cellule de ligne X et de colonne B)
Il faudrait que tu sois un peu plus précis.
Si je comprends bien, tu as une cellule qui contient "valeur 50" et tu veux retrouver "50" comme résultat. Mais quelles sont toutes les possibilités ?
Est-ce que "valeur" est toujours inscrit ? Est-ce que ça peut être un autre mot ?
Est-ce que le nombre est toujours de 2 chiffres ?
Est-ce que tu veux créer une fonction personnalisée ou utiliser le code dans une macro ?
Tu peux commencer par regarder ton aide sur les mots suivants:
Instr, Mid, Right, Left Éventuellement Split, Replace
MPi²
Pour ceux qui programment sous Office, n'oubliez pas qu'il existe un forum dédié à ces applications VBA....... ICI
Dim i As Long, X As Long, Y As Long
Y=1
For i = 1 to 160
If Cells(i, 1).Value = "debut message" then
X = i + 1
Do While cells(X,1).value < > "fin message" 'tant que la cellule est differente de "fin message"
cells(Y,3).value = cells(X,2).value 'mettre la valeur de la cellule (X,2) dans la cellule (Y,3)
X=X+1
Y=Y+1
Loop
Exit For
End If
Next i
et puis sur excel :
Remplacer(C1;1;7;"") et puis Remplacer(C2;1;7;"") ainsi de suite
exemple:
A B C
1 50
2 800
3 Debut Message 500
4 ... valeur 50 10
5 ... valeur 800
6 ... valeur 500
7 ... valeur 10
8 Fin Message
j'ai essaié ce programme mais ca marche pas encore j'ai une erreur que j'arrive pas à trouver, aidez moi! Merci
pour precision en fait valeur c'est juste un exemple pour vous expliquez ce que je veux mais sur mon vrai programme un truc genre "\par A25" sachant que le nombre 25 peux aller jusqu'a 3 chiffres mais la syntaxe reste toujours la meme(\par A30 , \par A35 , \par A235 , . . . . ) et les nombres sont aléatoires.
j'aurais bien aimé mettre tout ca dans une fonction personnalisée c'est plus pratique qu'avec une macro, c'est juste que je suis vraiment debutant en programmation sur excel et que je ne sais pas comment procedé pour le faire.
pour l'instant j'essaie de le faire avec une macro, voir l'exemple au dessus.
j'espere que j'etais clair MPi² et merci pour l'aide
Tres bonne idée, sauf que quand je lance le programme il detecte une erreur sur la ligne cells(Y,3).value = Replace(cells(X,2).value, "valeur ", "") c'est un peu bizar, pourtant ca doit marcher
Normalement, la macro dure une fraction de seconde.
J'ai refait le test en créant une erreur d'ortographe et ça prend plusieurs secondes et ça se termine avec une erreur 1004... à toi donc de vérifier tout ça...
MPi²
Pour ceux qui programment sous Office, n'oubliez pas qu'il existe un forum dédié à ces applications VBA....... ICI