VBA : Integrerer des variable en coordonée "cells" et "range&quot



Bonsoir cher communauté !

Mon souhait est un système qui permet de retrouver les valeurs supérieurs à Zéro dans le tableau de droite pour les envoyer dans celui de gauche au même emplacement.
(Au départ, au lieu du Zéro, je mettais "", mais, pour le système =si(cellule>0 il me mettais vrai ... )

D'origine, c'était pour créer un résolveur de Sudoku auquel les chiffres trouvés devaient être envoyé afin de trouver les suivants.

Je pense être très proche de la fin et il me reste une dernière étape à résoudre, c'est de faire fonctionner cela :

Private Sub CommandButton1_Click()

Dim NumLigne As Integer, NumColonne As Integer, Chiffre As Integer

Cells(32, 14) = NumLigne
NumColonne = 32

Do While Cells(14, NumColonne) = "KO"
NumColonne = NumColonne + 1
Loop

Cells(NumLigne, NumColonne).Value = Chiffre

Range(Cells(NumLigne, NumColonne - 30)) = Chiffre

End Sub


Ce que le VBA refuse, c'est ça :
Cells(NumLigne, NumColonne).Value = Chiffre


Merci d'avance pour vos réponses!

7 réponses

  1. Quand tu es en erreur (surlignage jaune) dans l’éditeur vba, tu passes le curseur sur chacune des variables NumLigne, NumColonne et Chiffre pour voir leur valeur, ça devrait te donner une indication

    Cdlmnt
    0
    1. Mais de manière général, dans d'autres cas, c'est le fait de mettre des variables dans les coordonnées du " Cells " , d'où le titre de la publication
      Pas du tout, tu peux mettre des variables aussi bien dans
      Cells(ligne,colonne) ligne et colonne étant des entiers
      que dans
      Range(colonne & ligne) colonne est une lettre et ligne un entier

      Si
      NumLigne prend la valeur de Cells(32,14)
      et
      Chiffre la valeur de Cells(NumLigne, NumColonne).Value
      Ton code devrait être
      Private Sub CommandButton1_Click()
      Dim NumLigne As Integer, NumColonne As Integer, Chiffre As Integer
      NumLigne = Cells(32, 14)
      NumColonne = 32
      Do While Cells(14, NumColonne) = "KO"
        NumColonne = NumColonne + 1
      Loop
      Chiffre = Cells(NumLigne, NumColonne).Value
      Range(Cells(NumLigne, NumColonne - 30)) = Chiffre
      End Sub

      Si ça ne donne pas le résultat souhaité c'est que le pb est ailleurs

      Cdlmnt
      0
      1. Merci beaucoup pour vos réponses!
        Cependant, Excel continue de me mettre la ligne :

        <code> Chiffre = Cells(NumLigne, NumColonne).Value <code>

        en jaune surligné.

        Si jamais, je suis sur la dernière version d'Excel.
        Je ne vous dérange pas davantage.

        Bonne soirée et merci encore !
        0
    2. ça ne fonctionne pas :(

      Mais de manière général, dans d'autres cas, c'est le fait de mettre des variables dans les coordonnées du " Cells " , d'où le titre de la publication :p

      Cordialement
      0
      1. oui, si c'est Chiffre qui prend la valeur de Cells(NumLigne, NumColonne)
        donc
        Chiffre = Cells(NumLigne, NumColonne)

        Cdlmnt
        0
        1. Cells(32, 14) = NumLigne
          doit devenir
          NumLigne = Cells(32, 14)

          Cdlmnt
          0
          1. Et tu as le même pb ici
            Cells(NumLigne, NumColonne).Value = Chiffre
            0
          2. Merci !!
            Mais ce qui me bloque surtout, c'est ceci :

            Chiffre = Cells(NumLigne, NumColonne)
            0
        2. Bonsoir,

          Merci de votre venu !

          Mon souhait au sujet de NumLigne est qu'il est la valeur de Cells(32,14).
          Cela n'est t'il donc pas possible ? :(

          Selon vous, comment procéderiez vous ?

          Cordialement
          0
          1. Bonjour

            un pb (au moins) avec NumLigne
            NumLigne n'est pas initialisé donc vaut 0 et cells(0,xx) vba n'aime pas

            Cdlmnt
            0