VBA : Variable d'un Inputbox dans une cellule

cipango Messages postés 26 Date d'inscription   Statut Membre Dernière intervention   -  
cipango Messages postés 26 Date d'inscription   Statut Membre Dernière intervention   -
Rebonjour à tous,
Le code suivant bloque à partir de "Range("A1").... " Pourquoi ?
Merci d'avance pour votre aide.



Dim NOM, PRENOM As String

Sub Workbook_Open()

MsgBox "Nous allons vous demander vos coordonnées", vbDefaultButton1
Reponse = MsgBox("Voulez-vous continuer ?", vbYesNo)
If Reponse = vbNo Then Exit Sub
NOM = InputBox("Indiquez votre nom : ", "IDENTIFICATION")
PRENOM = InputBox("Indiquez votre prénom", "IDENTIFICATION")

Range("A1").Text = NOM 'Ca ne marche pas
Range("A2").Text = PRENOM 'Ca ne marche pas

End Sub

15 réponses

WhiteFang Messages postés 2063 Date d'inscription   Statut Membre Dernière intervention   204
 
;-)

Un petit truc !! L'objet "Range", sous Excel, comme sous VBA Excel, n'est utile, et réellement fonctionnel que sur une PLAGE de cellules... "Range" est automatiquement utilisé quand on dit à Excel d'enregistrer une macro, mais c'est pas du vrai dev, ça....

Si l'on doit adresser UNE cellule, c'est l'objet Cells qu'il faut utiliser, pas Range.. Si on doit utiliser une colonne, c'est l'objet Columns(x), une ligne, Rows(x)..... Bref, pour faire du bon code, il faut utiliser les bons objets !!

C'est pas une critique !! Vous verrez, ça vous servira !! Faut bien penser !! ;-)

Workbook, au singulier, plantera, car cela implique la création d'une classe d'objets... Il faut utiliser Workoooks(x) (au pluriel), qui là, fait référence à une collection.... WorkSheet1, idem !! Plantagua !! C'est Sheets(x), l'objet à utiliser...

Un exemple de code : Workbooks(1).sheets(1).cells(1,1).value

;-)

A votre service !! ;-) Mais tout cela reste encore à développer !! Ce n'est qu'une partie de l'iceberg !! ;-) Reste un milliard de choses à expliquer !! ;-)

Mais on es là pour ça, me direz-vous !! ;-)

Wild and Free
1
Utilisateur anonyme
 
qu'est ce que range ?
une function ? faudrait la voir.
une textbox ou l'équivalent ? dans ce cas range(index).text=??
range(0).text range(1).text ...
ou si index calculé dans a1 et a2
range(a1).text range(a2).text
range en tout cas n'est pas une instruction VB
0
cipango Messages postés 26 Date d'inscription   Statut Membre Dernière intervention   6
 
Range n'est pas une instruction de VB mais une manière de définir une plage de cellule dans VBA Excel. On peut aussi utiliser Cells, je crois. Le problème, c'est que le nom demandé dans l'input box se trouve bien dans la variable Nom, mais que cette variable n'est apparemment pas reconnue par range ou cells qui sont des objets de la feuille de calcul d'Excel.
Si c'est bien le problème, comment faire pour qu'une variable soit reconnue partout ? J'ai essayé avec Static Nom as ... sans effet.
Merci de votre aide.
0
Utilisateur anonyme
 
est-ce que range("A1").text="Exemple" fonctionne ?
si non ça ne vient pas de la variable "nom"
si oui, il n'y a pas de raison.
0

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

Posez votre question
cipango Messages postés 26 Date d'inscription   Statut Membre Dernière intervention   6
 
Bien vu, d'essayer avec des " ", pour essayer sans la variable.
En fait je viens de résoudre mon problème. Ca marche avec ou sans " ", mais en utilsant Range("A1").value au lieu de Range("A1").text
Merci pour l'aide.
Il me reste encore à résoudre un problème plus complexe. "Dérivée et tangente sur un graphe Excel" lancé sur le forum il y a quelques heures et qui n'a pas trop de succès pour le moment...
0
mobile75
 
salut

j'ai essayé ton vb sur Excel 97

en mettant
Range("A1").value=nom


ça marche chez moi
0
cipango Messages postés 26 Date d'inscription   Statut Membre Dernière intervention   6
 
Ca ne m'étonne pas du tout. J'ai déjà utilisé range(
0
COURTOIS
 
Ca ne m'étonne pas du tout. J'ai déjà utilisé range("A1").value sur une autre machine ( avec Excel 97 justement ) et il me semble que ça marchait. Ici, chez moi, j'ai Excel 2000 et apparement ça ne marche pas...
C'est quand même pas toujours très logique, l'évolution des versions 95, 97, 2000, XP...
0
mobile75 Messages postés 69 Date d'inscription   Statut Membre Dernière intervention   17
 
resalut
je viens de tester sur excel 2000 mon range value fonctionne sur workbook_open
voici le code testé sur 97 et nt et sur excel 200 et W 2000
sub workbook-open()
nom=inputbox("entrer un nom")
Range("A1").value=nom

pas de probleme particuliers

as-tu coché dans options, general, parametres : style de reference L1C1 ( ca pourrait peut-etre venir de la ) donc range ("A1") ne fonctionne pas

A+
Essayer.........des fois ça marche............
0
Un Passant
 
Salut a toi !!

Lorsque tu affecte des cellules sous excell, quelques soit la methode (range,cells..) il faut que tu precise la feuille sur laquelle (ton code est placé dans l'evt workbook_Open) tu veux agir en passant par collection de feuilles worksheets ou par l'instructuin activesheet pour la feuille courante.

A+
0
cipango Messages postés 26 Date d'inscription   Statut Membre Dernière intervention   6
 
Justement...
Ca marche même si on ne précise pas:
Workbook.Worksheet1.Range("A1").value
Ce qui signifie que c'est la sheet1 ( celle qui est active ) qui est prise par défaut ?
0
WhiteFang Messages postés 2063 Date d'inscription   Statut Membre Dernière intervention   204
 
;-)

Cells(N° Ligne, N° Colonne).Value=Nom

;-)

Wild and Free
0
cipango
 
Merci pour tous ces conseills avisés.
J'ai écrit workbook sans s et sheet de manière approximative, sahant qu'il y avait des erreurs, mais comptant bien sur les Info express automatique de l'éditeur VBA pour me proposer la bonne syntaxe.
Il faut tout de même que je potasse un peu la difference entre les classes d'objets et les collections et tout ce méli mélo...
Encore merci et à plus.
Cipango.
0
stephanie
 
justement quelle est la difference ??

merci
0
cipango Messages postés 26 Date d'inscription   Statut Membre Dernière intervention   6
 
Désolé, mais je n'ai encore pas eu le temps de chercher à comprendre les modules de classe et autres concepts de VBA. En fait je n'ai pas besoin de ces fonctions pour le moment dans VBA.
Bon courage dans tes recherches. Il y a certainement quelqu'un de compétent prêt à t'aider sur ce site.
Bonne soirée.
0