Résolu Excel problème de calcul

  • Auteur de la discussion Xaneur
  • Date de début

Xaneur

Nouveau membre
Bonjour, voila le problème. Je suis sur un classeur excel, avec différentes feuilles. J'ai créé une feuille presque identique à une autre afin de pouvoir travailler sur celle la, sans endommager l'originale. Donc pour transférer les donnés simplement et facilement, j'ai nommé les colonnes et les ai reprises (Par exemple, la colonne "quantitej"). Tout marche, mais il y a un problème. Dans une colonne "Quantité", les quantités sont notées par exemple, 20x6. Donc dans la colonne originale et dans l'autre est affiché 20x6. Mais j'aimerais que dans la 2eme colonne, le résultat soit affiché. Le problème est que je n'arrive pas à insérer un signe égal qui ferait le calcul.
Merci pour votre aide
 

drul

Obscur pro du hardware
Staff
Que te dit Excel quand tu fais essaies d'insérer ton "=" ?

Rem: "=20x6" n'est pas une formule pour excel, il faut taper "=20*6"
 

Xaneur

Nouveau membre
Quand j'insère un autre "=", il me l'enlève et ne me laisse que =quantitej

Rem: Oui je sais, mais lorsque l'on met un "=20x6", excel nous donne quand même le résultat. Après je pourrais toujours faire un macro de remplacement si c'est possible.
 

drul

Obscur pro du hardware
Staff
La tu as un problème, si tu as =quantitej comme formule, il n'existe pas de moyen simple pour faire l'évaluation (faut passer passer du VBA)
Pour quoi as-tu une formule dans cette colonne ?
 

Xaneur

Nouveau membre
En fait je transfert la colonne des quantités d'une première feuille, qui est modifiée à chaque fois que la quantité change. Donc j'ai repris cette colonne pour y faire la comparaison sur une autre feuille qui elle, masquera les articles ayant une grande quantité et ne laisser afficher que les articles en manque.
 

Xaneur

Nouveau membre
Oui j'ai déjà ouvert l'éditeur, et fait quelques recherches sur une macro que j'ai réussi a mettre dans mon excel ^^
 

drul

Obscur pro du hardware
Staff
Essaye d'exécuter et de modifier l'exemple suivant:


Rem: "Dim a As String" et non As Variant (mais ça marche quand même)
 

Xaneur

Nouveau membre
Merci pour ton aide :) J'ai réussi à faire un bout de code, qui a marché mais qui bug maintenant :x Alors que je n'ai rien changé.
Le code est le suivant: (Il me dit qu'il y a une incompatibilité de type)
Code:
Sub Calcul()

Dim a As String
Dim cellule As Range
Dim Row As Long
Row = 0

For Each cellule In Range("D1:D99")
a = Replace(Cells(Row + 1, 4).Value, "x", "*")
Cells(Row + 1, 4).Value = Evaluate(a)
Row = Row + 1
Next cellule

End Sub

Edit modo: afin d'éviter les smileys, utilise les balises
[code="vb"]
... ton code ...
[/code]
merci d'avance
 

drul

Obscur pro du hardware
Staff
Meilleure réponse
Salut, le problème est que tu écrase la valeur de la cellule qui au départ contient une référence par une valeur numérique.
La deuxième fois que exécute ta macro, tu vas donc avoir un problème avec la fonction qui replace qui veut une "String" en entrée

Dans l'absolu tu ne devrais pas écraser tes données, c'est toujours dangereux.
Le mieux ici serait d'aller chercher les données dans la feuille 1.

Code:
Sub Calcul()
 
Dim a As String
Dim cellule As Range
Dim sourceSh As Worksheet
Dim destSh As Worksheet

Set sourceSh = Sheets("le nom de ta feuille source")
Set destSh = Sheets("le nom de ta feuille Destination")

For Each cellule In sourceSh.Range("D1:D99")
    If cellule.Value <> "" Then
        a = Replace(cellule.Value, "x", "*")
        destSh.Cells(cellule.Row, 4).Value = evaluate(a)
        End If
Next cellule
 
End Sub

Edit: en fait le problème vient surement du fait que tu as des #VALUE! dans certaines case après la première exécution du code ...
 

Xaneur

Nouveau membre
Ouaahh tu me sauves la vie! Je voulais partir sur cette idée, mais je n'arrivais pas à aller chercher les données de la premiere feuille sur la 2eme ^^ Donc la clairement, tu viens de résoudre tout mes problèmes merci !
 

drul

Obscur pro du hardware
Staff
Bon y a encore un truc un peu moche, c'est le
Code:
"D1:D99"
... en principe on essaie de déterminer la plage que l'on veut traiter à l'aide de:
Code:
derLigne = Range("D" & ActiveSheet.Rows.count).end(xlUp)+1
 
Vous devez vous inscrire ou vous connecter pour répondre ici.
Derniers messages publiés
Statistiques globales
Discussions
730 158
Messages
6 718 521
Membres
1 586 443
Dernier membre
iso3god
Partager cette page
Haut