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. 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
    1. 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. 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. oui, si c'est Chiffre qui prend la valeur de Cells(NumLigne, NumColonne)
        donc
        Chiffre = Cells(NumLigne, NumColonne)

        Cdlmnt
        0
        1. ç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. 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. 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