Microsoft 365 Impossible de mettre à jour la valeur d'une cellule en VBA !

jlgarnier

XLDnaute Nouveau
Bonjour à tou(te)s,

Je dois passer à côté d'un truc grossier, mais dans une fonction, je tente de stocker une valeur calculée dans une cellule et obtiens une erreur :

FirstEmptyCodeRow = Worksheets("Data").Cells(2, 2).End(xlUp).Row + 1
Worksheets("Data").Cells(FirstEmptyCodeRow, 2).Value = "Test" --> ERREUR

C'est tellement simple que je ne vois pas où je me plante...

Merci d'avance pour vos conseils !
 
Solution
Finalement, j'ai créé un boîte de dialogue pour recueillir les valeurs en entrée et le code que j'avais du mal à faire fonctionner dans la worksheet se comporte comme attendu dans la dialogbox !

Problèmes résolus donc ! Merci beaucoup à tous !

vgendron

XLDnaute Barbatruc
Bonjour

1) la feuille "Data" existe t elle bien?
2) FirsEmptyCodeRow te renvoie quoi comme valeur?
3) la cellule cible n'est elle pas affublée d'une liste de validation ( dans laquelle Test n'est pas autorisée)

sans fichier exemple pour voir, aucune autre idée..
 

jlgarnier

XLDnaute Nouveau
Bonjour

1) la feuille "Data" existe t elle bien?
2) FirsEmptyCodeRow te renvoie quoi comme valeur?
3) la cellule cible n'est elle pas affublée d'une liste de validation ( dans laquelle Test n'est pas autorisée)

sans fichier exemple pour voir, aucune autre idée..
1 : oui, puisque je parviens à lire la valeur d'une cellule sans problème
2 : la variable vaut 2, soit la première ligne puisque la colonne est vide à part le label "Code" en B1
3 : non, il n'y a aucun format...

Comme il n'y a rien de secret, j'attache le fichier directement !

Merci pour ton aide !
 

Pièces jointes

  • Customer code.xlsm
    26.5 KB · Affichages: 9

Dranreb

XLDnaute Barbatruc
Bonsoir.
Dans une Function, pas une Sub ?
Si oui, comment est elle invoquée ?
Si c'est depuis une cellule c'est cuit, parce qu'on est forcément en plein calcul de la feuille, opération durant laquelle Excel ne procède à aucune modification du classeur. Il faudrait déjà noter les infos en consigne dans une collection VBA, et vider celle ci en appliquant les changements dans une Sub Worksheet_Calculate ou Workbook_SheetCalculate
 

vgendron

XLDnaute Barbatruc
d'après mes essais, je rejoins donc Dranreb que je salue
une fonction "personalisée" n'est donc pas autorisée à modifier le contenu d'autres cellules du classeur
si tu commentes les 2 dernières lignes, la fonction donne bien le résultat attendu
 

jlgarnier

XLDnaute Nouveau
Cela voudrait dire que :
1. je dois créer une Sub et non une Function ?
2. je ne peux pas modifier le contenu d'une cellule dans une fonction appelée par une autre cellule ?

Comment invoquer une Sub à partir d'une cellule, aussi simplement que =CreateCode(C2) ?

Merci d'avance pour vos conseils !
 

Dranreb

XLDnaute Barbatruc
On ne peut pas modifier le classeur pendant les calculs. Mais juste après, si, dans une Sub Worksheet_Calculate du module de la feuille. Sinon, une macro classique qui modifie quelque chose s'affecte généralement à un bouton de formulaire.

Le plus classique c'est quand même plutôt de réagir au changement de contenu d'une cellule dans une Private Sub Worksheet_Change(ByVal Target As Range) du module de l'objet Worksheet représentant la feuille.
 
Dernière édition:

jlgarnier

XLDnaute Nouveau
Ça s'arrange en effet en travaillant dans Worksheet_Change ! 😉 En revanche, j'ai un souci curieux : je cherche à connaitre la première cellule vide de la colonne B et j'ai écrit
VB:
Worksheets("Data").Range("B1").End(xlDown).Activate
FirstEmptyCellRow = Worksheets("Data").Range("B1").End(xlDown).Row

mais j'obtiens une erreur "la méthode Activate a échoué". Comment est-ce possible ?
 

jlgarnier

XLDnaute Nouveau
Finalement, j'ai créé un boîte de dialogue pour recueillir les valeurs en entrée et le code que j'avais du mal à faire fonctionner dans la worksheet se comporte comme attendu dans la dialogbox !

Problèmes résolus donc ! Merci beaucoup à tous !
 

Discussions similaires

Réponses
7
Affichages
326

Statistiques des forums

Discussions
312 211
Messages
2 086 300
Membres
103 173
dernier inscrit
Cerba95