Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

Chercher une virgule

  • Initiateur de la discussion Initiateur de la discussion Egruat
  • 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 !

Egruat

XLDnaute Occasionnel
Bonjour,

Je cherche à faire une macro testant la présente ou pas de virgule dans une cellule contenant un chiffre.

S'il y a une virgule alors il faut multiplier ce chiffre par 1000 000

Sinon par 1000. Voici ma macro qui ne fonctionne pas.

----
Sub macro2()

For i = 4 To 10

If Application.WorksheetFunction.Find(",", Range("E" & i)) = True Then

Range("H" & i).Select
ActiveCell.FormulaR1C1 = "=RC[-2]*1000000"

Else

Range("H" & i).Select
ActiveCell.FormulaR1C1 = "=RC[-2]*1000"

End If

Next i

End Sub

Merci de votre aide !
 
Re : Chercher une virgule

Bonjour,

attention parce que la virgule est parfois le signe de la décimale mais parfois des milliers, ça dépend du clavier dans windows...et de la version excel français/anglais
 
Re : Chercher une virgule

Bonjour Egruat, gosselien,

Code:
Sub macro2()
[H4:H10].FormulaR1C1 = "=RC[-3]*IF(ISERROR(FIND("","",RC[-3])),1000,1000000)"
End Sub
Décalage -3 entre les colonnes H et E...

A+
 
Re : Chercher une virgule

Re,

Avec ceci la macro fonctionne quel que soit le séparateur décimal de l'ordi :

Code:
Sub macro2()
[H4:H10].FormulaR1C1 = "=RC[-3]*IF(ISERROR(FIND(MID(1/10,2,1),RC[-3])),1000,1000000)"
End Sub
A+
 
Re : Chercher une virgule

Okay merci. Ta 1ère solution me convient car la valeur décimal est dans mon cas uniquement la virgule. En revanche, j'ai besoin de l'appliquer sur une plage de cellules variable
 
Re : Chercher une virgule

Re,

Est-il possible de mettre une variable dans la plage de cellule ? tel que par exemple [H4:Hi] ?

Une variable ??? Cela n'a pas de sens, mais si vous voulez une plage dynamique :

Code:
Sub macro2()
Range("H4:H" & Cells(Rows.Count, "E").End(xlUp).Row).FormulaR1C1 _
  = "=RC[-3]*IF(ISERROR(FIND(MID(1/10,2,1),RC[-3])),1000,1000000)"
End Sub
A+
 
Re : Chercher une virgule

Re,

Une macro plus peaufinée avec RAZ :

Code:
Sub macro3()
Range("H4:H" & Rows.Count).ClearContents 'RAZ
With Range("H4:H" & Cells(Rows.Count, "E").End(xlUp).Row)
  If .Row < 4 Then Exit Sub
  .FormulaR1C1 = "=RC[-3]*IF(ISERROR(FIND(MID(1/10,2,1),RC[-3])),1000,1000000)"
End With
End Sub
A+
 
- 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

Discussions similaires

Réponses
15
Affichages
646
Réponses
8
Affichages
356
Réponses
5
Affichages
836
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…