ducobave
Messages postés7Date d'inscriptionsamedi 28 octobre 2006StatutMembreDernière intervention10 janvier 2007
-
11 déc. 2006 à 19:45
ducobave
Messages postés7Date d'inscriptionsamedi 28 octobre 2006StatutMembreDernière intervention10 janvier 2007
-
12 déc. 2006 à 20:05
Bonjour,
Je suis tout nouveau et completement débutant et je fais un bts informatique réseaux, le pbl c'est
qu'on doit écrire un ptit programme sur excel et je n'y connai rien. Le pgm doit demander a l'utilisateur de rentrer une valeur qui sera le pas, puis une autre valeur qui sera la valeur maxi. Le programme devra afficher toute les valeurs entre 0 et la valeur maxi avec la valeur du pas pour intervalle. Les resultats doivent etre affichés dans la colone "A" d'excel et commencer a 0 a partir de la ligne 5.Ensuite le programme demande a l'utilisateur d'entrer une valeur au hasard, si la valeur n'existe pas un msgbox s'affiche et dit : "La valeur n'existe pas" et si elle existe le pgm devra réécrire cette valeur dans la colone "B" sur la meme ligne mais d'une couleur differente. Avec de l'aide j'ai pu avoir ca mais ca ne marche pas, quelqu'un peut-il m'aider???
Mon PGM :
Sub Bouton1_QuandClic()
Dim pas, max, ligne, colone, valeur, valeurb As Integer
Dim ref, refdest As String
pas = InputBox("Entrez le pas")
max = InputBox("Entrez la valeur maxi")
ligne = 5
valeur = 0
colone = "A"
While valeur <= maxi
ref = "A" & CStr(ligne)
valeur = cells(ref).Value
ligne = ligne + 1
valeur = valeur + pas
Wend
valeurb = InputBox("Entrez une valeur a charcher")
ligne = 5
colone = "A"
valeur = 0
While valeur <= max And valeur <> valeurb
ref = "A" & CStr(ligne)
valeur = cells(ref).Value
ligne = ligne + 1
Wend
If valeur = valeurb Then
ligne = ligne - 1
refdest = "B" & CStr(ligne)
cells(refdest).Value = cells(ref).Value
cells(refdest).Color = red
Else
MsgBox ("La valeur n'existe pas !")
End If
End Sub
Merci de me venir en aide, avant jeudi si possible, merci
cs_casy
Messages postés7741Date d'inscriptionmercredi 1 septembre 2004StatutMembreDernière intervention24 septembre 201440 11 déc. 2006 à 20:53
Ton problème vient du mot clé Cells.
Il y a 2 manières d'adresser une cellule
- soit par son "nom" par exemple "A1"
- soit par sa ligne et colonne
Cells utilise le format ligne colonne. Pour l'adressage par nom il faut passer par Range.
Je te corrige la première boucle, tu fera les autres si tu as compris :
Donc 2 possibilités :
ligne = 5
valeur = 0
colone = "A"
While valeur <= maxi
ref = "A" & CStr(ligne)
<strike>valeur = cells(ref).Value</strike>
valeur = Range(ref).Value
ligne = ligne + 1
valeur = valeur + pas
Wend
Ou alors :
ligne = 5
valeur = 0
<strike>colone = "A"</strike>
colone = 1
While valeur <= maxi
<strike>ref = "A" & CStr(ligne)</strike>
<strike>valeur = cells(ref).Value
</strike> valeur = cells(ligne,colone).Value<strike>
</strike> ligne = ligne + 1
valeur = valeur + pas
Wend
---- Sevyc64 (alias Casy) ----<hr size="2" width="100%" /># LE PARTAGE EST NOTRE FORCE #
cs_casy
Messages postés7741Date d'inscriptionmercredi 1 septembre 2004StatutMembreDernière intervention24 septembre 201440 11 déc. 2006 à 21:27
Bon en fait je me suis un peu emballer tout à l'heure. Tu as d'autres erreurs.
Du coup, j'ai corrigé tout le code. Même si ce n'est peut-etre pas le meilleurs code qu'on puisse faire, j'ai gardé ton code pour que tu puisse voir les différences.
Dim pas As Integer, max As Integer, ligne As Integer
Dim valeur As Integer, valeurb As Integer
Dim ref As String, refdest As String, colone As String
pas = InputBox("Entrez le pas")
max = InputBox("Entrez la valeur maxi")
ligne = 5
valeur = 0
colone = "A"
While valeur <= max
ref = "A" & CStr(ligne)
Range(ref).Value = valeur
ligne = ligne + 1
valeur = valeur + pas
Wend
valeurb = InputBox("Entrez une valeur a charcher")
ligne = 5
colone = "A"
valeur = 0
While valeur < max And valeur <> valeurb
ref = "A" & CStr(ligne)
valeur = Range(ref).Value
ligne = ligne + 1
Wend
If valeur = valeurb Then
ligne = ligne - 1
refdest = "B" & CStr(ligne)
Range(refdest).Value = Range(ref).Value
Range(refdest).Interior.Color = vbRed
Else
MsgBox ("La valeur n'existe pas !")
End If
---- Sevyc64 (alias Casy) ----<hr size="2" width="100%" /># LE PARTAGE EST NOTRE FORCE #
ducobave
Messages postés7Date d'inscriptionsamedi 28 octobre 2006StatutMembreDernière intervention10 janvier 2007 12 déc. 2006 à 09:32
Franchement merci beaucoup, je ne savais pas comment m'en sortir!
Tu a dis que ce n'est pas le meilleur des codes que l'on puisse faire, y a t il un code
plus court ou plus simple?
Molenn
Messages postés797Date d'inscriptionmardi 7 juin 2005StatutMembreDernière intervention23 février 20117 12 déc. 2006 à 12:03
Plus court, il y a ... dans le sens où on peut se passer des variables de référence pour les passer directement en argument des Range, et parce que l'on peut supprimer un certain nombre de compteurs du code de Casy.
Après plus simple, pas forcément ^^. Ca dépend si tu veux dire plus simple à lire ou à comprendre. Mais on peut toujorus faire différent. Voilà comment j'ai fait personnellement :
'Définition des variables
Dim Pas As Integer, Max As Integer, Colonne As Integer, Valeur As Integer, ValeurB As Integer
Dim LigneDépart As Integer, DernièreLigne As Integer, Ligne As Integer
'Initialisation des variables
LigneDépart = 5
Colonne = 1
'Remplissage de la colonne A
Pas = InputBox("Entrez le pas")
Max = InputBox("Entrez la valeur maxi")
Ligne = LigneDépart
For Valeur = 0 To Max Step Pas
Cells(Ligne, Colonne).Value = Valeur
Ligne = Ligne + 1
Next Valeur
'Recherche d'une valeur B
ValeurB = InputBox("Entrez une valeur à chercher")
If ValeurB < 0 Or ValeurB > Max Then
MsgBox "La valeur n'existe pas."
Else
For Ligne = LigneDépart To DernièreLigne Step 1
Valeur = Cells(Ligne, Colonne).Value
If Valeur = ValeurB Then
Cells(Ligne, Colonne + 1).Value = Cells(Ligne, Colonne).Value
Cells(Ligne, Colonne + 1).Interior.Color = vbRed
Exit Sub
End If
Next Ligne
MsgBox "La valeur n'existe pas."
End If
Ca ne fonctionne pas mieux ou moins bien, c'est juste une autre façon de faire.
Molenn
Vous n’avez pas trouvé la réponse que vous recherchez ?
ducobave
Messages postés7Date d'inscriptionsamedi 28 octobre 2006StatutMembreDernière intervention10 janvier 2007 12 déc. 2006 à 20:05
Encore merci pour ton aide qui m'est precieuse (pour mes cours) et même pour moi,
je reviendrai surement poser quelques questions parce que cette partie la de l'informatique c'est pas trop mon truc, merci et bonne soirée!