VBA, Si cellule vide, variable suivante (solver)

Fermé
Albert - Modifié le 28 avril 2020 à 18:29
yg_be Messages postés 23323 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 12 novembre 2024 - 28 avril 2020 à 18:54
Bonjour,

Bonjour,

Je cherche à éviter de lancer le solver de ma macro et passer à la ligne suivante si la cellule est vide.
la cellule à vérifier et en colonne CG et la ligne est déterminée par la variable K
Le code ci-dessous ne fonctionne pas, voyez-vous l'erreur ?

Sub solver()
' Solver Macro
 Dim K As Integer
  For K = 7 To 51
  If Cells("CG" & K) = 0 Then
  Next
  Else
    SolverReset
    SolverOk SetCell:="CM" & K, MaxMinVal:=2, ValueOf:=0, ByChange:=[CH1:CL1].Offset(K - 1), _
        Engine:=2, EngineDesc:="Simplex LP"
    SolverAdd CellRef:="CM" & K, Relation:=3, FormulaText:="CG" & K
    SolverAdd CellRef:=[CH1:CL1].Offset(K - 1), Relation:=4, FormulaText:="entier"
    SolverSolve Userfinish:=True
   Next
   End If
End Sub


EDIT : Ajout du LANGAGE dans les balises de code pour avoir la coloration syntaxique et l'indentation

Cdlt

1 réponse

jordane45 Messages postés 38284 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 11 novembre 2024 4 697
28 avril 2020 à 18:30
Bonjour

0 n'est pas "vide"
et l'utilisation de cells n'est pas bonne
Essaye
 If Range("CG" & K).value = "" Then

1
yg_be Messages postés 23323 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 12 novembre 2024 1 552
28 avril 2020 à 18:54
ou même ceci:
Sub solver()
' Solver Macro
Dim K As Integer
For K = 7 To 51
    If Cells(K, "CG") <> "" Then
        SolverReset
        SolverOk SetCell:="CM" & K, MaxMinVal:=2, ValueOf:=0, ByChange:=[CH1:CL1].Offset(K - 1), _
            Engine:=2, EngineDesc:="Simplex LP"
        SolverAdd CellRef:="CM" & K, Relation:=3, FormulaText:="CG" & K
        SolverAdd CellRef:=[CH1:CL1].Offset(K - 1), Relation:=4, FormulaText:="entier"
        SolverSolve Userfinish:=True
    End If
Next K
End Sub
0