[Catégorie modifiée VB6 -> VBA] Aide pour un devoir en VBA

nana3210 Messages postés 7 Date d'inscription lundi 16 avril 2012 Statut Membre Dernière intervention 17 avril 2012 - 17 avril 2012 à 16:42
nana3210 Messages postés 7 Date d'inscription lundi 16 avril 2012 Statut Membre Dernière intervention 17 avril 2012 - 17 avril 2012 à 19:11
Bonjour à tous,

Tout d'abord je suis nouvelle sur le forum, donc je ne sais pas si mon post est bien placé.
J'aimerai votre aide pour un devoir d'informatique que je dois rendre au plus tard pour vendredi.
voici le sujet :
Un employé au guichet d’une banque entre le numéro de compte de client dans un formulaire adapté. Si le numéro de compte existe dans la base des comptes, les renseignements de client sont affichés automatiquement :
Nom, prénom, date de naissance, adresse, numéro de téléphone, fax, email et le solde de son compte.
Les informations personnelles des clients sont enregistrés dans une feuille qui s’appelle « don-per ». Les transactions sont enregistrées dans une feuille qui s’appelle « compte ». Ce fichier consiste aux colonnes suivantes :
Numéro de compte, Date, Description, Débit, Crédit

Créer le formulaire de présentation des données.

Dans une autre partie de feuille préparer le formulaire pour introduire les données de nouvelle entrée. Ecrire une macro qui ajoute les données à la liste « don_per ». A chaque ajout la liste sera triée en fonction de numéro de compte.

Créer un formulaire pour entrer les opérations. Ces opérations seront entrer dans la liste « compte » triée par la date. L’ajout se fait par une macro. Mettre en place des boutons adaptés pour lancer ces macros.

Préparer une feuille de calcul qui donne le relevé de compte pour un compte et un mois donné.

Préparer une autre feuille de calcul qui donne le rapport des transactions de guichet pour chaque jour donné et la balance des crédits et des débits.


Ma première macro fonctionne à peu près (j'ai un problème avec des cellules vides qu'Excel a enregistré) mais sans la fonction de tri. Je n'ai pas trouvé le programme en VBA qui me permet de trier correctement ma liste. Excel ne me trie que la colonne A, de plus il prend en compte ma ligne de titre. Donc à partir de ce niveau là je suis un peu perdue.
Et pour la 2ème macro, je n'y arrive pas. La condition if then ne fonctionne pas.

Quelqu'un pourrait-il m'aider ?

Merci d'avance

Nana

12 réponses

cs_Jack Messages postés 14006 Date d'inscription samedi 29 décembre 2001 Statut Modérateur Dernière intervention 28 août 2015 79
17 avril 2012 à 17:06
Salut

On ne fera pas le devoir à ta place.
Si tu ne nous montres pas ce que tu as fait (*), on ne te proposera rien.
(*) proprement présenté avec la coloration syntaxique = 3ème icone à droite

Le tri : Pourtant simple, suffit de lire l'aide, y compris en ce qui concerne la ligne des titres de colonnes

" La condition if then ne fonctionne pas "
On ne sait pas de quoi tu parles

Vala
Jack, =fr MVP VB
NB : Je ne répondrai pas aux messages privés

Le savoir est la seule matière qui s'accroit quand on la partage (Socrate)
0
ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 211
17 avril 2012 à 17:13
Bonjour,
Je souscris à ce que jack, que je salue, a exprimé en ce qui concerne la raison des devoirs qui sont à faire.

Dans de tels cas : un conseil, une piste (et à toi de bûcher) :===>>
l'enregistreur de macro est là pour t'aider à la synbtaxe du tri que tu veux faire. Sers-t-en.
________________________
Réponse exacte ? => "REPONSE ACCEPTEE" pour faciliter les recherches.
Pas d'aide en ligne installée ? => ne comptez pas sur moi pour simplement vous dire ce qu'elle contient. Je n'interviendrai qu'en cas de nécessité de développ
0
nana3210 Messages postés 7 Date d'inscription lundi 16 avril 2012 Statut Membre Dernière intervention 17 avril 2012
17 avril 2012 à 17:38
Est-ce que ceci correspond à la coloration syntaxique ??

Voici pour la 1ère macro
Sub Macro4()
'
' Macro4 Macro
'

'
    Sheets("clients à ajouter").Select
    Range("A2:H2").Select
    Selection.Copy
    Sheets("don_per").Select
    ActiveCell.SpecialCells(xlLastCell).Select
    ActiveWindow.SmallScroll Down:=-15
    ActiveCell.Offset(1, -7).Select
    ActiveSheet.Paste
    Sheets("compte").Select

End Sub

ActiveWindow.SmallScroll Down:=-15 : je ne comprends pas cette instruction. quand je l'exécute en pas à pas, il me fait un saut de 15 lignes mais après il revient en arrière et le reste de ma macro fonctionne à peu près.

Voici pour la 2ème :
Sub operations_compte()

Sheets("opé pour le compte").Select
Range("A2:C2").Select
Selection.Cut
Sheets("compte").Select
ActiveCell.SpecialCells(xlLastCell).Select
ActiveCell.Offset(1, -4).Select
ActiveSheet.Paste
Sheets("opé pour le compte").Select
If Cells(D2) > 0 Then
Cells(D2).Select
Selection.Cut
Sheets("compte").Select
Cells(D2) = crédit
ActiveSheet.Paste
End If

End Sub

A partir de cette instruction ça ne fonctionne plus : If Cells(D2) > 0 Then
J'explique ce que je veux faire. Si le chiffre qui est écrit en D2 est supérieur à 0, il faut le couper et le coller dans la feuille compte à l'emplacement D6. Si c'est inférieure à 0, il faut qu'il me la colle en D5.

Petite précision : c'est la 1ère macro que je dois réaliser. Il y a 3 jours, je ne savais pas ce qu'était VBA. J'ai lu pas mal de tutoriel mais malgré cela j'ai pas mal de difficultés.

Nana
0
ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 211
17 avril 2012 à 17:45
Réflexe, donc : ===>> (et toujours en simple "guide", sans faire ton devoir) ==>>ouvrir ton aide VBA/Excel sur le mot Cells ===>> y découvrir sa syntaxe d'utilisation


________________________
Réponse exacte ? => "REPONSE ACCEPTEE" pour faciliter les recherches.
Pas d'aide en ligne installée ? => ne comptez pas sur moi pour simplement vous dire ce qu'elle contient. Je n'interviendrai qu'en cas de nécessité de développ
0

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

Posez votre question
nana3210 Messages postés 7 Date d'inscription lundi 16 avril 2012 Statut Membre Dernière intervention 17 avril 2012
17 avril 2012 à 17:51
Oui j'ai lu l'aide sur cells. Il y a même un exemple dont j'aurai pu me servir pour ma condition.
Mais je vois pas à quoi correspond ce qu'il y a écrit avant.
If mySheet.Cells(rwIndex, colIndex) < .001 Then
            mySheet.Cells(rwIndex, colIndex).Value = 0
        End If



Nana
0
ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 211
17 avril 2012 à 18:03
Et pourtant !
entre ce petit morceau :
Cells(rwIndex, colIndex)

et ceci :
Renvoie un objet Range qui représente les cellules contenues dans la plage spécifiée.
Syntaxe

expression.Cells

expression Variable qui représente un objet Range.

Remarques


La propriété Item étant la propriété par défaut (propriété par défaut : propriété que vous pouvez définir pour un contrôle de telle sorte que chaque fois qu'un nouveau contrôle de ce type est créé, cette propriété aura la même valeur.) de l'objet Range, vous pouvez spécifier l'index de ligne et de colonne immédiatement après le mot clé Cells. Pour plus d'informations, voir la rubrique relative à la propriété Item et les exemples correspondants.

Utilisée sans qualificateur d'objet, cette propriété renvoie un objet Range représentant toutes les cellules contenues dans la feuille de calcul active.

tout est on ne peut plus clair



________________________
Réponse exacte ? => "REPONSE ACCEPTEE" pour faciliter les recherches.
Pas d'aide en ligne installée ? => ne comptez pas sur moi pour simplement vous dire ce qu'elle contient. Je n'interviendrai qu'en cas de nécessité de développ
0
nana3210 Messages postés 7 Date d'inscription lundi 16 avril 2012 Statut Membre Dernière intervention 17 avril 2012
17 avril 2012 à 18:08
Ce qui est écrit après cells je l'ai compris, il s'agit de row pour la ligne et de colum pour la colonne.
C'est expression que je ne comprends pas. Je vois pas à quoi il peut correspondre dans ma feuille. Par quoi pourrais-je remplacer ? Selection ? pour dire que je sélectionne cette cellule si elle est supérieure à O

Nana
0
ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 211
17 avril 2012 à 18:18
soit x = 2 et y = 3
cells(x,y) se réfère à la cellule de la ligne x, colonne y
L'objet cells a des propriétés, qui sont rigoureusement les mêmes que celkle celles de l'objet Range (ton aide VBA sur ce mot). En regardant la liste des membres de cette objet ===>> propriétés ===>> on y voit la propriété Value et son explication (même pas nécessaire, tellement le mot Value est à lui seul explicite). On y apprend même que cette propriété est en lecture et écriture !
Et comme dans tout langage objet ===>> si O est un objet, SO un sous-objet et P la propriété de ce sous-objet : O.SO.P est le contenu de la propriété P concernée.
Tu m'étonnes et me déconcertes.
Bonne étude



________________________
Réponse exacte ? => "REPONSE ACCEPTEE" pour faciliter les recherches.
Pas d'aide en ligne installée ? => ne comptez pas sur moi pour simplement vous dire ce qu'elle contient. Je n'interviendrai qu'en cas de nécessité de développ
0
nana3210 Messages postés 7 Date d'inscription lundi 16 avril 2012 Statut Membre Dernière intervention 17 avril 2012
17 avril 2012 à 18:33
Je ne sais pas d'où m'est venue l'illumination (sûrement quand j'ai vu le mot Value) mais
voilà ce que j'ai fait :

If Cells(2, 4).Value > 0 Then
Cells(2, 4).Select
Selection.Cut
Sheets("compte").Select
Cells(2, 4) = Cells(7, 5)
ActiveSheet.Paste


Cela fonctionne jusqu'à Sheets("compte").Select
Mais maintenant je voudrai coller ce que j'ai sélectionner sur Cells(7, 5) de la feuille compte.
Quand je mets ceci Cells(2, 4) = Cells(7, 5) rien ne se passe.

Nana
0
nana3210 Messages postés 7 Date d'inscription lundi 16 avril 2012 Statut Membre Dernière intervention 17 avril 2012
17 avril 2012 à 18:35
ah si il se passe quelque chose d'étrange, il me la colle en A9 au lieu de E9

Nana
0
ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 211
17 avril 2012 à 19:00
Tu sais quoi, nana3210 ?
Je vais te laisser là.
Pourquoi ? ===>>
parce que ce à quoi tu te "heurtes" est très élémentaire et est ce que j'ai appris dès le début de mon apprentissage VBA/Excel, dans la toute première heure (voire demie-heure), le tout en ne lisant que l'aide en ligne.
Or, voilà déjà deux bonnes heures que tu as ouvert la présente discussion.
J'ai le sentiment très net que ce ne serait pas vraiment t'aider, que de continuer à te prendre par la main ainsi (surtout pour ces bases-là !)
Je te souhaite une bonne et consciencieuse lecture. Tu parviendras à tes fins si tu t'y mets avec soin.
Bonne chance, nana3210.


________________________
Réponse exacte ? => "REPONSE ACCEPTEE" pour faciliter les recherches.
Pas d'aide en ligne installée ? => ne comptez pas sur moi pour simplement vous dire ce qu'elle contient. Je n'interviendrai qu'en cas de nécessité de développ
0
nana3210 Messages postés 7 Date d'inscription lundi 16 avril 2012 Statut Membre Dernière intervention 17 avril 2012
17 avril 2012 à 19:11
Et bien merci pour l'aide apportée.
La programmation n'est pas faite pour moi. Je dois m'y résoudre.
J'ai déjà passé 5h hier plus 1h aujourd'hui avant de faire ce post. Et puis le résultat obtenu n'est pas concluant.
Je suis en pleines révisions de partiels, et je n'ai plus de temps à perdre avec ce projet.
Je ne compte pas sur cette note pour avoir mon semestre, et heureusement ...

Merci encore ! Grâce à vous, j'ai une macro qui donne un résultat.

Nana
0
Rejoignez-nous