Cellule = variable : concaténer cette variable
Résolu
claclou.0204
-
f894009 Messages postés 17413 Statut Membre -
f894009 Messages postés 17413 Statut Membre -
Bonjour,
Je déclare au tout début de mon module en public la variable qui correspond à ma cellule( je la nomme c1 cette variable), c1 = Stock.Worksheets("ASM").Cells(134, 10)
Comme je l'utilise dans plusieurs procédures, la déclarer me permet de ne pas rallonger mes codes avec : Stock.Worksheets("ASM").Cells(134, 10) à chaque fois ...
Ainsi, je la déclare dans l'onglet "déclarations" au début de mon module en public bien sûr.
Dans la 1ère procédure j'affecte à cette variable sa valeur c'est à dire : c1 = Stock.Worksheets("ASM").Cells(134, 10)
et puis la ligne du dessous je soustrait à c1 une valeur mais ca ne marche pas ...
Par contre si je n'utilise pas c1 mais Stock.Worksheets("ASM").Cells(134, 10) ca fonctionne...
Je ne sais pas pourquoi
avez vous une solution à ce problème ?
Merci d'avance
Voici mon code :
Public c1 As Integer
---------------------------------------------------
Sub petitMikadocentral()
Dim Nom As Workbook 'Mon classeur
Dim Stock As Workbook 'L'autre classeur
Dim quantité As Integer
Set Nom = ActiveWorkbook
Set Stock = Workbooks.Open("C:\Users\clari\Documents\STAGE\Missions\Mission n°2\ASM-gestion stock.xlsm")
quantité = Nom.Worksheets("Feuil1").Cells(5, 8)
c1 = Stock.Worksheets("ASM").Cells(134, 10)
'platine : C1
c1 = c1 - quantité * Nom.Worksheets("Feuil1").Cells(4, 4)
Nom.Worksheets("Feuil1").Cells(5, 8) = 0
End Sub
Je déclare au tout début de mon module en public la variable qui correspond à ma cellule( je la nomme c1 cette variable), c1 = Stock.Worksheets("ASM").Cells(134, 10)
Comme je l'utilise dans plusieurs procédures, la déclarer me permet de ne pas rallonger mes codes avec : Stock.Worksheets("ASM").Cells(134, 10) à chaque fois ...
Ainsi, je la déclare dans l'onglet "déclarations" au début de mon module en public bien sûr.
Dans la 1ère procédure j'affecte à cette variable sa valeur c'est à dire : c1 = Stock.Worksheets("ASM").Cells(134, 10)
et puis la ligne du dessous je soustrait à c1 une valeur mais ca ne marche pas ...
Par contre si je n'utilise pas c1 mais Stock.Worksheets("ASM").Cells(134, 10) ca fonctionne...
Je ne sais pas pourquoi
avez vous une solution à ce problème ?
Merci d'avance
Voici mon code :
Public c1 As Integer
---------------------------------------------------
Sub petitMikadocentral()
Dim Nom As Workbook 'Mon classeur
Dim Stock As Workbook 'L'autre classeur
Dim quantité As Integer
Set Nom = ActiveWorkbook
Set Stock = Workbooks.Open("C:\Users\clari\Documents\STAGE\Missions\Mission n°2\ASM-gestion stock.xlsm")
quantité = Nom.Worksheets("Feuil1").Cells(5, 8)
c1 = Stock.Worksheets("ASM").Cells(134, 10)
'platine : C1
c1 = c1 - quantité * Nom.Worksheets("Feuil1").Cells(4, 4)
Nom.Worksheets("Feuil1").Cells(5, 8) = 0
End Sub
A voir également:
- Cellule = variable : concaténer cette variable
- Excel cellule couleur si condition texte - Guide
- Proteger cellule excel - Guide
- Aller à la ligne dans une cellule excel - Guide
- Excel cellule choix multiple - Guide
- Comment colorer une cellule excel en fonction du contenu d'une autre cellule ✓ - Forum Excel
2 réponses
bonjour,
je pense qu'il faut plutôt faire ainsi:
Il faut déclarer la variable comme un ensemble de cellules, pas comme un entier. Et associer la variable c1 à la cellule, faire correspondre la variable à la cellule.
Les autres instructions (sans le
je pense qu'il faut plutôt faire ainsi:
Public c1 As range set c1 = Stock.Worksheets("ASM").Cells(134, 10)
Il faut déclarer la variable comme un ensemble de cellules, pas comme un entier. Et associer la variable c1 à la cellule, faire correspondre la variable à la cellule.
Les autres instructions (sans le
set) utilisent alors le contenu de la cellule, soit pour la modifier, soit pour la consulter.
Bonjour,
Votre code "marche" tres bien.
Quand vous ecrivez ca ne marche pas, c'est quoi le marche pas?
Par contre c1, si vous l'utilisez en tant que c1 = Stock.Worksheets("ASM").Cells(134, 10) dans d'autres modules, il ne faut pas faire de calcul du genre c1= c1 - quantité * Nom.Worksheets("Feuil1").Cells(4, 4), car c1 n'est plus egal a son affectation de depart
Votre code "marche" tres bien.
Quand vous ecrivez ca ne marche pas, c'est quoi le marche pas?
Par contre c1, si vous l'utilisez en tant que c1 = Stock.Worksheets("ASM").Cells(134, 10) dans d'autres modules, il ne faut pas faire de calcul du genre c1= c1 - quantité * Nom.Worksheets("Feuil1").Cells(4, 4), car c1 n'est plus egal a son affectation de depart
est équivalente à:
Merci beaucoup !!!! :)
j'aimerai déclarer mes deux classeurs en début de module pour éviter de les déclarer et affecter dans chaque procédure
je fais
Public Nom As Workbook
Public Stock As Workbook
et dans seulement la 1ère procédure
je mets :
Set Nom = ActiveWorkbook
Set Stock = Workbooks.Open("C:\Users\clari\Documents\STAGE \Missions\Mission n°2\ASM-gestion stock.xlsm")
Quand on travaille avec plusieurs classeurs, "activeworkbook" n'est pas toujours ce qu'on avait pensé au départ.
Quelle est la question? workbooks.open() devrait bien fonctionner pour ouvrir le second classeur. Si il est dans le même dossier que le premier, il est parfois préférable d'utiliser plutôt que de préciser le chemin dans le code. Utile si l'endroit change.