Résolu VBA: Macro Conversion

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

LightenTriff

Habitué
Bonjour à tous.
Je souhaite faire une macro pour convertir des bar, psi et Pa en mbar.

J'ai fait cette macro:
Code:
Sub Conversion()

Dim i As Integer


For i = 5 To Sheets("PRESSURE").Cells(Rows.Count, 1).End(xlUp).Row
Select Case Sheets("PRESSURE").Cells(i, 8)

Case "bar"
Cells(i, 6).Value = (Cells(i, 6).Value * 1000)
Cells(i, 7).Value = (Cells(i, 6).Value * 1000)
Cells(i, 8) = "mbar"


Case "psi"
Cells(i, 6).Value = (Cells(i, 6).Value * 6.897)
Cells(i, 7).Value = (Cells(i, 6).Value * 6.897)
Cells(i, 8) = "mbar"

Case "Pa"
Cells(i, 6).Value = (Cells(i, 6).Value / 100)
Cells(i, 7).Value = (Cells(i, 6).Value / 100)
Cells(i, 8) = "mbar"

Case Else
End Select
Next

End Sub

Mais lors de l’exécution de la macro seul les unité change en "mbar" et les valeurs passe à 0.

Les unités de mesure sont dans la colonne "H", les valeurs à modifier sont dans les colonnes "F" et "G". La première ligne à étudiée est la ligne 5.

J'ai utilisé ce que Zeb et Tantal m'avais déja donné sur mes deux autres sujets, mais je ne vois pas pourquoi cela ne marche pas.

Merci d'avance pour votre aide
 

zeb

Modérateur
Salut,

On prend les mêmes et on recommence.

i ne doit pas être un entier court (Integer), mais un entier long (Long).
Facultatif mais recommandé par Zeb (*) : pour ne plus avoir à te tromper, utilise des objets, pas leurs coordonnées !

Indente ton code, bougre de ..... (<-- mettre ici un truc déplaisant) !

Code:
Cells(i, 6).Value = (Cells(i, 6).Value * 1000)
Cells(i, 7).Value = (Cells(i, 6).Value * 1000)
Vire les parenthèses inutiles !
Ligne 1, tu changes (i,6).
Ligne 2, tu utilises la cellule (i,6) changée.

Maintenant repose ta question ! :o :o :o

______________
(*) Le débat fait rage, il n'y a pas qu'une bonne manière de faire.
 

LightenTriff

Habitué
Mais je l'avais indenté :'(.

Code:
Sub Conversion()

Dim i As Long


For i = 5 To Sheets("PRESSURE").Cells(Rows.Count, 1).End(xlUp).Row
    Select Case Sheets("PRESSURE").Cells(i, 8)

        Case "bar" 'conversion bar/mbar
            Cells(i, 6).Value = Cells(i, 6).Value * 1000
            Cells(i, 7).Value = Cells(i, 6).Value * 1000
            Cells(i, 8) = "mbar"
        
        
        Case "psi" 'conversion psi/mbar
            Cells(i, 6).Value = Cells(i, 6).Value * 6.897
            Cells(i, 7).Value = Cells(i, 6).Value * 6.897
            Cells(i, 8) = "mbar"
        
        Case "Pa" 'conversion Pascal/mbar
            Cells(i, 6).Value = Cells(i, 6).Value / 100
            Cells(i, 7).Value = Cells(i, 6).Value / 100)
            Cells(i, 8) = "mbar"

        Case Else
    End Select
Next

End Sub

Par contre pour les (i,6), je ne comprend pas ce que tu veux dire.
 

zeb

Modérateur
(i,6) = La cellule (i,6) !!!!

M'enfin !
Dis-nous en français, ce que tu cherches à faire par :
Code:
Cells(i, 6).Value = Cells(i, 6).Value * 1000
Cells(i, 7).Value = Cells(i, 6).Value * 1000
 

LightenTriff

Habitué
Bonjour Zeb,

j'avais comprit que tu parlais des cellule pour les (i,6) mais je voit pas par quoi tu veux que je les remplaces.

avec
Code:
Cells(i, 6).Value = Cells(i, 6).Value * 1000
Cells(i, 7).Value = Cells(i, 6).Value * 1000
Je souhaite écrire dans la cellule (i,6) et (i,7) leurs valeurs multiplié par 1000, pour effectuer ma conversion.
 

zeb

Modérateur
Meilleure réponse
D'abord, j'ai demandé "en français".
Donc, voici ma première réponse : et la grammaire bordel !

Quoi !!!! mais qu'est-ce qui lui prend au Zeb ????

Les langages de programmation sont comme les langages naturels. Ils sont dotés d'une syntaxe qu'il faut respecter.
Si tu prétends vouloir programmer, il va falloir être respectueux de la syntaxe. Alors commence par le français.

Dezio (<-- et il ose parler de français correct :sarcastic: ) ton problème est pile sur la faute de français LOL

Je souhaite écrire dans les cellules (i,6) et (i,7) leur[strike]s[/strike] valeur[strike]s[/strike] multipliée par 1000

[traduction]pour chaque cellule concernée, je souhaite multiplier sa valeur par 1000.[/traduction]
Pour (i,6), ça s'écrit : effectivement
Code:
Cells(i, 6).Value = Cells(i, 6).Value * 1000
Et pour (i,7), pareil, sauf qu'il faut changer TOUS les 6 en 7.

Je t'aurais bien fait cette remarque dès le début, mais je n'avais pas compris exactement ce que tu voulais.
 

LightenTriff

Habitué
Bonsoir,

Tout d'abord excuse-moi pour mes fautes, je ne me suis pas relu avant de partir, j'étais pressé.

Je viens de voir en effet mon erreur, je en sais pas comment j'ai fait pour passer à côté, j'ai bien eu beau relire je n'avais pas vu l'erreur de syntaxe.

Je te remercie encore une fois de ton aide, et désolé du temps que je t’ais fais perdre pour une erreur si bénigne.
 

zeb

Modérateur
Bon, alors j'accepte tes remerciements, évidemment.
Et je suis d'accord avec toi, si tu es désolé de passer à côté d'un truc aussi stupide.

Mais :
1) Non, je n'accepte pas que tu sois désolé parce que j'y ai passé du temps. Je fais ce que je veux de mon temps de travail au bureau :na:
2) Non ce n'est pas une erreur de syntaxe - que t'aurait signalé VB de toutes façons, mais juste une étourderie. J'ai 28 ans de programmation derrière moi, et il m'arrive encore de faire ce genre de connerie. Alors, toi qui débutes !

A bientôt
;)
 

LightenTriff

Habitué
Bonjour Zeb, oui pas de syntaxe mais bien d'étourderie :p, j'en avais déjà fais une avec Tantal, qui m'avais tout aussi bien corrigé.

Encore une fois merci, vos conseils me font avancer à grands pas, j'ai effectué les premiers Tests entiers ce matin, tout fonctionne correctement.

A bientôt, si un nouveau problème vient se poser sur ma route.
 
Vous devez vous inscrire ou vous connecter pour répondre ici.
Derniers messages publiés
Statistiques globales
Discussions
730 131
Messages
6 717 941
Membres
1 586 382
Dernier membre
alejandrooo
Partager cette page
Haut