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 code

Et 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 Sub

Code 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 !

Rechercher des sujets similaires à "probleme utilisation"