chaudier37
Messages postés209Date d'inscriptionjeudi 5 août 2004StatutMembreDernière intervention15 juillet 2009
-
13 févr. 2008 à 10:26
chaudier37
Messages postés209Date d'inscriptionjeudi 5 août 2004StatutMembreDernière intervention15 juillet 2009
-
22 févr. 2008 à 10:42
Bonjour,
je travaille dans excel et vba.
dans excel j'appuie sur un bouton qui appelle un inputbox. me demande une quantité d'article à entrer et la reference de l'article concerné. j'entre les deux informations.
à partir de ces informations, les variables qui sont la quantité et la ref vont s'inscrire dans un tableau de la page excel. je voudrais que ces infos aillent aussi sur une autre page et cela ne fonctionne pas. quelqu'un peut il me donner la marche à suivre pour que ma variable aille sur deux pages en même temps ? merci
cs_MPi
Messages postés3877Date d'inscriptionmardi 19 mars 2002StatutMembreDernière intervention17 août 201822 14 févr. 2008 à 11:10
Pour éviter de tout refaire, il faudrait que tu expliques ce qui ne fonctionne pas... message d'erreur ? si oui lequel et quel est son numéro ? sur quelle ligne apparaît-il ?
Pour connaître le nombre de lignes (en colonne A) d'une feuille, utilise ceci
DerniereLigne = Cells(Rows.Count, " A ").End(xlUp).Row + 1
En ajoutant +1, ça te donne la première ligne vide. Ensuite, tu peux utiliser cette variable pour inscrire tes données
Range("A" & DerniereLigne) = Date
Range("B" & DerniereLigne) = qte
Range("C" & DerniereLigne) = ref
Pour trouver une valeur sur une ligne de la feuil2, utilise Find
Dim Recherche As Range
Set Recherche = Sheets("Feuil2").Columns("A").Find(ref)
If Not Recherche Is Nothing Then 'trouvé
Sheets("Feuil2").Range("B" & Recherche.Row) = _
qte + Sheets("Feuil2").Range("B" & Recherche.Row)
End If
De cette façon, tu n'as pas à sélectionner explicitement la Feuil2 et la procédure sera plus rapide. N'oublie pas le début de ma réponse, si tu rencontres une erreur...
MPi²
Pour ceux qui programment sous Office, n'oubliez pas qu'il existe un forum dédié à ces applications VBA....... ICI
Molenn
Messages postés797Date d'inscriptionmardi 7 juin 2005StatutMembreDernière intervention23 février 20117 13 févr. 2008 à 11:57
Ton code doit être dans la page en lui-même.
C'est à dire que ton bouton se situe dans la feuille appellé "Feuil1".
Ton code lui doit être quelque chose du genre : range("A1").Value = inputbox("......")
Avec ce code, tu ne peux agir que sur la feuille à laquelle ton code est rattaché.
Pour écrire dans une autre feuille, il faut préciser l'adresse de la cellule en incluant en plus le nom de la feuille, ce qui se fait avec l'objet Worksheets.
Donc, pour écrire sur tes deux feuilles en même temps, ce que tu dois faire doit ressembler à ceci :
Quand je clique sur le bouton d'enregistrement, voici le programme qui se déclenche :
Private Sub CommandButton1_Click()
le curseur se positionne sur la première cellule de la page et va à la fin de cette colonne et une cellule en dessous
Range("A1").Select
Selection.End(xlDown).Select
ActiveCell.Offset(1, 0).Range("A1").Select
Là, je déclare mes variables : qte est la variable quantité, ref la variable reference
Dim qte As Integer
Dim ref As String
Là je mets qte = 1 et je précise au programme, tant que la qte est difféente de 0, continue de lancer la boite message...
qte = 1
While qte <> 0
qte = InputBox("entrez la quatité")
ref = InputBox("entrez la reference")
Là je positionne sur ma feuille les infos voulues : la date, la quantité et la ref
Selection = Date
ActiveCell.Offset(0, 1) = qte
ActiveCell.Offset(0, 2) = ref
là je me posittionne à la fin de mon tableau pour recommencer l'opération jusqu'à ce que la quantité soit égale à 0
ActiveCell.Offset(1, 0).Range("A1").Select
et là, je dits au programme d'aller à la feuille 2, de se positionner sur la vellule A1 et, de jusqu'à ce que la cellule active soit égale à la variable ref, de descendre d'une cellule.
Worksheets("Feuil2").Range("A1").Select
Do Until ActiveCell = ref
ActiveCell.Offset(1, 0).Select
Loop
quand la cellule active est égale à la ref, va à la cellule à côté et ajoute à la valeur de la cellule la variable qté.
ActiveCell.Offset(0, 1) = qte+ Val(ActiveCell.Offset(0, -1))
Wend
End Sub
et cela ne fonctionne pas, comment je peux faire ? merci de votre aide
cs_MPi
Messages postés3877Date d'inscriptionmardi 19 mars 2002StatutMembreDernière intervention17 août 201822 13 févr. 2008 à 23:51
Qu'est-ce qui ne fonctionne pas ?
As-tu un message d'erreur ? si oui, il faudrait le donner ainsi que le numéro de cette erreur.
Ce que je pense, c'est que tu devrais activer la feuil2 avant de sélectionner sa cellule
<strike>Worksheets("Feuil2").Range("A1").Select</strike>
Worksheets("Feuil2").Activate
Range("A1").Select
Autrement, je changerais trop de chose et je devrais refaire tout le code...
MPi²
Pour ceux qui programment sous Office, n'oubliez pas qu'il existe un forum dédié à ces applications VBA....... ICI
Vous n’avez pas trouvé la réponse que vous recherchez ?