Problème avec utilisation de Cells
Bonjour,
Je suis nouveau sur ce forum et novice en VBA. En réalisant le programme ci-dessous j'obtiens l'erreur "Erreur d'exécution 13: incompatibilité de type" à la ligne: Energy = Cells(num_lign, 7) * Cells((num_lign - 1), 4).
J'ai tout de même remarqué qu'en remplaçant -1 par +1 je n'ai plus d'erreur. Une idée pour résoudre le problème?
Merci par avance pour votre aide.
Sub Calcul_Energie()
'
' Calcul_Energie Macro
'Déclaration variables
Dim num_column As Integer
Dim num_lign As Integer
Dim Energy As Single
Dim Affichage_column As Integer
Dim Affichage_lign As Integer
Dim temp As Integer
'Initialisation
num_column = 8
num_lign = 3
Affichage_column = 11
Affichage_lign = 4
Energy = 0
While Cells(num_lign, num_column) = True
Energy = Cells(num_lign, 4) * (Cells(num_lign, 7) - Cells(num_lign - 1, 7))
num_lign = num_lign + 1
Wend
Cells(Affichage_lign, Affichage_column) = Energy
Energy = 0
End Sub
Bonjour,
Il serait plus aisé d'examiner ton code, s'il était sous balises Code, s'il était indenté correctement sans sauter une quantité invraisemblable de lignes...
Mais surtout, comment veux-tu que l'on se fasse une idée sérieuse sur une erreur 13 sans connaître le contenu des colonnes D, G (et même H), ni savoir sur quelle ligne l'erreur survient !
La logique est que l'opération ne peut être réalisée sur la ligne courante parce qu'une valeur est inadéquate...
Il t'appartient d'observer les cellules concernées pour le déceler !
Cordialement.
J'ai exécuté la macro en mode pas à pas en scrutant les variables qui s'initialisent bien mais dès que le programme exécute la première fois la ligne: Energy = Cells(num_lign, 4) * (Cells(num_lign, 7) - Cells(num_lign - 1, 7))
l'erreur apparaît.
Que voulez-vous dire exactement par utiliser des balises codes? Afin de scruter les valeurs des variables?
Les cellules du classeur sont initialement vides.
Que voulez-vous dire exactement par utiliser des balises codes? Afin de scruter les valeurs des variables?
Quand tu rédiges ton post, tu lèves légèrement la tête pour voir les boutons au-dessus de la fenêtre de rédaction : l'un d'eux porte la mention Code ! Il sert à placer le code sous balises Code, ce qui le fait apparaître dans une fenêtre :
Ceci est une ligne de codeEt si ton code est indenté, l'indentation est alors conservé :
Sub Calcul_Energie()
Dim num_column As Integer
Dim num_lign As Integer
Dim Energy As Single
Dim Affichage_column As Integer
Dim Affichage_lign As Integer
num_column = 8
num_lign = 3
Affichage_column = 11
Affichage_lign = 4
While Cells(num_lign, num_column) = True
Energy = Cells(num_lign, 4) * (Cells(num_lign, 7) - Cells(num_lign - 1, 7))
num_lign = num_lign + 1
Wend
Cells(Affichage_lign, Affichage_column) = Energy
End SubCode qui pourrait être simplifié, mais je n'en ai ici supprimé que les lignes manifestement sans objet !
Je n'aime pas non plus les expressions sans qualificateur d'objet, mais c'est une autre question !
Tu testes H3, qui doit te renvoyer True ou False. Si comme tu l'indiques, tes cellules sont initialement vides, elle ne peut renvoyer que False et tout s'arrête donc avant de démarrer !
Pour que la ligne de calcul qui suit s'exécute, H3 doit renvoyer True !
Et dans ce cas ton calcul est : D3 * (G3 - G2)
Si D3, G3 et G2 sont vides, le résultat sera naturellement 0...
Il faut croire que ce n'est pas le cas ! Donc que tu n'as pas bien regardé...
C'est bon le formatage de mes cellules n'était pas bon car il prenait en compte les entêtes qui ne sont pas des nombres lors de la première itération
Energy = Cells(num_lign - 1, 7)
Merci !