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

Fermé
EXCEL-lent Messages postés 5 Date d'inscription lundi 10 mai 2021 Statut Membre Dernière intervention 23 février 2022 - Modifié le 10 mai 2021 à 18:51
ccm81 Messages postés 10853 Date d'inscription lundi 18 octobre 2010 Statut Membre Dernière intervention 24 avril 2024 - 11 mai 2021 à 10:41


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

ccm81 Messages postés 10853 Date d'inscription lundi 18 octobre 2010 Statut Membre Dernière intervention 24 avril 2024 2 404
10 mai 2021 à 19:06
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
EXCEL-lent Messages postés 5 Date d'inscription lundi 10 mai 2021 Statut Membre Dernière intervention 23 février 2022
10 mai 2021 à 20:23
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
ccm81 Messages postés 10853 Date d'inscription lundi 18 octobre 2010 Statut Membre Dernière intervention 24 avril 2024 2 404
10 mai 2021 à 20:53
Cells(32, 14) = NumLigne
doit devenir
NumLigne = Cells(32, 14)

Cdlmnt
0
ccm81 Messages postés 10853 Date d'inscription lundi 18 octobre 2010 Statut Membre Dernière intervention 24 avril 2024 2 404
Modifié le 10 mai 2021 à 20:57
Et tu as le même pb ici
Cells(NumLigne, NumColonne).Value = Chiffre
0
EXCEL-lent Messages postés 5 Date d'inscription lundi 10 mai 2021 Statut Membre Dernière intervention 23 février 2022
10 mai 2021 à 21:00
Merci !!
Mais ce qui me bloque surtout, c'est ceci :

Chiffre = Cells(NumLigne, NumColonne)
0
ccm81 Messages postés 10853 Date d'inscription lundi 18 octobre 2010 Statut Membre Dernière intervention 24 avril 2024 2 404
10 mai 2021 à 21:04
oui, si c'est Chiffre qui prend la valeur de Cells(NumLigne, NumColonne)
donc
Chiffre = Cells(NumLigne, NumColonne)

Cdlmnt
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
EXCEL-lent Messages postés 5 Date d'inscription lundi 10 mai 2021 Statut Membre Dernière intervention 23 février 2022
10 mai 2021 à 21:12
ç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
ccm81 Messages postés 10853 Date d'inscription lundi 18 octobre 2010 Statut Membre Dernière intervention 24 avril 2024 2 404
10 mai 2021 à 21:20
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
EXCEL-lent Messages postés 5 Date d'inscription lundi 10 mai 2021 Statut Membre Dernière intervention 23 février 2022
10 mai 2021 à 21:49
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
ccm81 Messages postés 10853 Date d'inscription lundi 18 octobre 2010 Statut Membre Dernière intervention 24 avril 2024 2 404
11 mai 2021 à 10:41
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