chaudier37
Messages postés209Date d'inscriptionjeudi 5 août 2004StatutMembreDernière intervention15 juillet 2009
-
13 févr. 2008 à 23:25
cs_MPi
Messages postés3877Date d'inscriptionmardi 19 mars 2002StatutMembreDernière intervention17 août 2018
-
14 févr. 2008 à 23:24
Bonjour,
Je fais un travail qui me pose un problème. je travaille dans excel. j'ai un bouton sur une feuille qui appelle des inputbox qui entrent des variables. une variable qté et une variable ref. à chaque entrée d'information les valeurs vont s'additionner dans un tableau de la feuile excel. à la fin de l'enregistrement j'ai un tableau qui ressemble à cela dans ma feuille 1
Dans une autre feuille j'ai aussi un tableau ref et je voudrais qu'à chaque nouvelle ref enregistrée en feulle 1 le programme aille chercher la valeur dans la feuille 2 et par la position relative aille s'ajouter dans la colonne quantité... cela ne fonctionne pas avec le programme que j'ai fait (voir ci dessous)
dans la feuille 1,
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 ?
apparement les variables ne sont valables que pour une feuille ? il n'est pas possible qu'une variable soit valable pour plusieurs feuilles ?
et je voulais connaître l'interet des modules de classes. A quoi ils servent ? est ce que par cette méthode mon programme peut fonctionner ?
merci de votre aide
NHenry
Messages postés15102Date d'inscriptionvendredi 14 mars 2003StatutModérateurDernière intervention27 mars 2024159 14 févr. 2008 à 13:50
Bonjour
Ne met pas réponse acceptée si ton pb n'est pas solutionné.
Voici un petit code fais rapidement (donc pas forcément parfait) :
private const cFeuilData as string="Feuil1" 'Feuille contenant les données
private const cFeuilRecap as string="Feuil2" 'Feuille des récapitulatif
Private Sub CommandButton2_Click() 'MAJ des données
dim lShData as object
dim lShRecap as object
'Mise en cacha des feuilles
set lShData=sheets(cFeuilData)
set lShRecap=sheets(cFeuilRecap)
dim i as long
'RAZ des données
lshrecap.range("A2:B65535").value=empty
i=1
'Tant que l'on a pas atteint la fin du tableau on continue
do while cstr(lshdata.cells(i,1).value)<>""
with ldhrecap.cells(lshdata.cells(i,3)+1,1) 'Eventuellement revoir le _
positionnement vertical
.Value=lshdata.cells(i,3)
.offset(0,1).value=.offset(0,1).value+lshdata.cells(i,2)
end with
'Incrémentation !!!! INDISPENSABLE sinon boucle infinie
i=i+1
loop
end sub, ----
(Coloration syntaxique automatique par Kenji)
Dans Word, j'Excel. (juste pour la citation)
VB (6, .NET1&2), C++, C#.Net1
Mon site
cs_MPi
Messages postés3877Date d'inscriptionmardi 19 mars 2002StatutMembreDernière intervention17 août 201823 14 févr. 2008 à 23:24
La méthode Find que je t'ai proposée sur ton autre message ne convient pas ?
C'est identique, à peu de chose près, à faire une recherche à l'aide de Ctrl-F ou menu Édition / Rechercher
MPi²
Pour ceux qui programment sous Office, n'oubliez pas qu'il existe un forum dédié à ces applications VBA....... ICI