un fichier exemple avec les diverses écritures possibles et les résultats attendusC'est pour du calcul de besoin à partir d'un inventaire.
Certaines cellules de l'inventaire sont en nombre de sacs par exemple, d'autres sont en gr et d'autres sont en nb sacs + gr.
Les nb sacs se remplissent automatiquement dans le calcul de besoin, par pour ce qui des autres je souhaite faire intervenir l'utilisateur pour qu'il renseigne lui même l'info après contrôle des valeurs
4 – La question doit être posée le plus clairement possible en comprenant bien que le lecteur ne peut pas s’imaginer le problème.
5 – La possibilité de joindre des fichiers est donnée sur ce forum. Ne pas hésiter à utiliser cette fonction, tout en veillant que les données soient bidons et donc qu’aucune donnée confidentielle, nominative ne soit dans le fichier.
Function Test$(x As Variant)
Dim i%, t1 As Boolean, t2 As Boolean
If IsError(x) Then x = ""
For i = 1 To Len(x)
If IsNumeric(Mid(x, i, 1)) Then t1 = True Else t2 = True
Next
If Not t1 Then Test = "Aucun chiffre" Else If IsNumeric(Left(x, 1)) And Not t2 Then Test = "Chiffres seulement" Else Test = "Mélange"
End Function
Function Test$(x As Variant)
Dim ds$, i%, t1 As Boolean, t2 As Boolean
ds = Application.DecimalSeparator
If IsError(x) Then x = ""
For i = 1 To Len(x)
If i > 1 And Mid(x, i, 1) = ds Then If IsNumeric(Mid(x, i - 1, 1)) And IsNumeric(Mid(x, i + 1, 1)) Then i = i + 1 'le séparateur est ignoré
If IsNumeric(Mid(x, i, 1)) Then t1 = True Else t2 = True
Next
If Not t1 Then Test = "Aucun nombre" Else If IsNumeric(Left(x, 1)) And Not t2 Then Test = "Nombres seulement" Else Test = "Mélange"
End Function
Dans ce cas, tester si la cellule contient du texte ou non n'apporterait une solution qu'au travers d'une véritable usine à gaz en VBA alors que la solution d'Eric au post #16 (une colonne dédiée aux unités) résoudrait le problème de la façon la simple possible !C'est pour du calcul de besoin à partir d'un inventaire.
Certaines cellules de l'inventaire sont en nombre de sacs par exemple, d'autres sont en gr et d'autres sont en nb sacs + gr.
Function Gr(x$, sac#)
Dim s, i%
s = Split(Replace(x & " ", ",", ".")) 'le séparateur décimal n'a pas d'importance
For i = 0 To UBound(s)
If Val(s(i)) Then Gr = Gr + IIf(LCase(s(i + 1)) Like "sac*", sac, 1) * Val(s(i))
Next
End Function
=ENT(C6/F2)&" sac"&REPT("s";ENT(C6/F2)>1)&REPT(" + "&ARRONDI(C6-F2*ENT(C6/F2);2)&" gr";ARRONDI(C6-F2*ENT(C6/F2);2)>0)
Au cas où.Puisqu'on a parlé de "sacs" et de "gr" voyez le fichier joint qui utilise ces 2 unités de mesure.
Dans ce cas le fait de savoir que c'est un mélange ou pas va t'aider ? Que comptes-tu faire de cette info ?Pour info, je récupère ces données dans un fichier créé par qqn d'autre.
Le but étant de simplifier certaines choses.
Le but étant de simplifier certaines choses.