• Initiateur de la discussion Initiateur de la discussion JJ
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

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
 
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
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD
Assurez vous de marquer un message comme solution pour une meilleure transparence.

Discussions similaires

Réponses
23
Affichages
665
Réponses
41
Affichages
1 K
Réponses
4
Affichages
280
Retour