extraire nombres

J

JJ

Guest
Bonsoir
J'ai écrit une macro simple qui fonctionne pourtant pas!
J'ai une feuille Excel, chaque cellule successive est de la forme:
(x,0) (y,1)(x,0) (y,1) etc...
x et y pouvant aller de 1 à 99

Dim x,y As Integer
For Each Cel In Selection
If Cel.Value = '(x,0) Then
Cel.Value = x
Else
If Cel.Value = '(y,1) Then
Cel.Value = y
Cel.Font.ColorIndex = 3
End If
End If
Next
End Sub
Ca ne marche pas, en fait je veux extraire le nombre avant le 0 ou le 1 (et en rouge si case du 1 pour differencier)

ou mieux: extraire le nombre avant le 0 sur cette ligne et inserer une ligne dessous et mettre le nombre avant le 1 ce qui eviterait de mettre en rouge
et recommencer avec la ligne suivante.. (donc au final j'aurais donc le double de lignes)

Qui peut m'aider?
merci
Bon WE
 

Robert

XLDnaute Barbatruc
Repose en paix
Bonsoir JJ, bonsoir le forum,

Quand j'ai voulu tester ton problème et écrire dans une cellule (12,0) ou (9,1) ça m'a transformé en -12 et -9,1. J'ai donc appliqué un format Texte dans les cellules.

Je pense que tu as un problème de convertion. Je te propose la macro suivante qui travaille sur du texte :


Sub Macro1()
Dim Cel As Range 'déclare la variable Cel
Dim coul As Integer 'déclare la variable Coul

For Each Cel In Selection 'boucle sur toutes les cellules de la sélection

'codition 1 : si le premier caractère de la cellule Cel est '('
'et le dernier caractère de la cellule est ')'
If Left(Cel.Value, 1) = '(' And Right(Cel.Value, 1) = ')' Then

'condition 2 : si l'avant dernier caractère est '1'
If Mid(Cel, Len(Cel.Value) - 1, 1) = '1' Then
coul = 3 'définit la variable coul
Else 'sinon
coul = 0 'définit la variable coul
End If 'fin de la condition 2

'condition 3 : si le troisième caractère de la cellule est ','
If Mid(Cel.Value, 3, 1) = ',' Then
'renvoie le premier caractère après la parenthèse d'ouverture
'converti en entier
Cel.Value = CInt(Mid(Cel.Value, 2, 1))
Else 'sinon
'renvoie les deux premiers caractères après la parenthèse d'ouverture
'convertis en entier
Cel.Value = CInt(Mid(Cel.Value, 2, 2))
End If 'fin de la condition 3

Cel.Font.ColorIndex = coul 'couleur de la police

End If 'fin de la condition 1

Next Cel 'prochaine cellule de la sélection
End Sub
 

Discussions similaires

Réponses
2
Affichages
172
Réponses
2
Affichages
154