Aide débutant en VBA

Résolu/Fermé
sou - 5 sept. 2010 à 00:58
 sou - 28 sept. 2010 à 23:42
Bonsoir,


J'ai crée ce topic car j'ai vraiment besoin d'aide,

Je suis stagiaire dans une boite d'informatique, et n'ayant jamais programmé jusqu'alors, on me demande tout de même "d'essayer" de créer un ptit programme en VBA.

Ce programme devra permettre à mon responsable de choisir un nombre d'utilisateurs dans une référentiel...davoir leurs nombre de reparations effectuées dans un temps définis (qu'il aura le choix de choisir Sur 1 semaine 1 mois etc...)

Bien sur, je ne demande absolument pas qu'on me le fasse, ce que j'aimerais surtout c'est qu'on m'aide a comprendre l'interaction des tableaux avec la partie "code" .
Et aussi comprendre comment faire des tableaux ( je créais un listbox ..ok mais apres ? comment faire les onglets à cocher ? )


Je suis vraiment motivé...et je me suis beaucoup documenté, il me faut juste une aide au lancement (ou quelqu'un pour m'aider au début).


Merci beaucoup d'avance

18 réponses

Polux31 Messages postés 6917 Date d'inscription mardi 25 septembre 2007 Statut Membre Dernière intervention 1 novembre 2016 1 204
18 sept. 2010 à 11:50
Bonjour,

Regarde ici: https://rp.developpez.com/vb/tutoriels/mysql/

C'est pour du VB mais ça doit aussi marché en VBA.

Si tu débutes en programmation, tu risque d'avoir quelques problèmes pour comprendre le fonctionnement des exemples donnés.

Exerces toi avec les exemples pour comprendre comment ça fonctionne.


ATTENTION, il te faut le fichier libmySQL.dll dans le répertoire windows pour que ça fonctionne correctement.

Bon courage

;o)
1
Philippe Forget Messages postés 23 Date d'inscription dimanche 1 août 2010 Statut Membre Dernière intervention 26 décembre 2011 3
5 sept. 2010 à 01:03
Salut sou ... Je vais ésaiyer de t'aider le plus possible donc voici
http://www.siteduzero.com/tutoriel-3-134798-visual-basic-net.html</code>  Ses le site du zero ta juste a chercher quesque ta besoin et voîla 

Tout les Code sont ! :)

Voici le code pour une progresse bar

______________Timer_____________________
ProgressBar1.Increment(1)
if progressbar1.value = Progressbar1.Maximum then

_____________Button_____________________

timer1.start()


Merci
0
cousinhub29 Messages postés 881 Date d'inscription mardi 10 août 2010 Statut Membre Dernière intervention 16 avril 2024 333
5 sept. 2010 à 01:03
Bonjour,

Pas de soucis, mais il va falloir partir sur une base....

Si tu as déjà l'ébauche d'un fichier, avec des données anonymisées, on peut commencer à travailler dessus...

Pour joindre ton fichier exemple, utilise un de ces liens :

http://www.cijoint.fr/

https://www.cjoint.com/

Bon courage
0
Le probleme c'est que je n'ai rien ....

J'ai page 1 : juste une listbox : je sais pas comment y mettre les onglets des personnes ( qui se trouvent dans des cellules pages 2)


Je viens de débuter... j'arrive pas a gérer la parties interconnections...



Si tu as msn :$ ....
0

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

Posez votre question
cousinhub29 Messages postés 881 Date d'inscription mardi 10 août 2010 Statut Membre Dernière intervention 16 avril 2024 333
5 sept. 2010 à 01:17
Re-,

Tu comprendras aisément que je ne vais pas développer via MSN, le principe d'un forum étant de faire participer, et progresser tout le monde....

Comme tu l'as dit :

je ne demande absolument pas qu'on me le fasse


Il va donc falloir que tu commences par créer une base, pour l'insertion dans des objets ActiveX (objets comme ListBox, Combobox...), on verra par la suite pour les alimenter, et les utiliser...

Mais, et je me répète, il te faut une base de travail....(à priori, déjà renseignée en Feuil2...)

On peut partir de là...

@ te relire
0
Re,
Ok je comprends et tu as tout a fait raison...


Je vais tâcher d'avancer dans la partie design, et remplissage et je reviendrais je pense demain avec un "support"

Par contre besoin juste d'une réponse:


Lorsqu'on créait une listbox en page 1 , et que l'on a ses données en page 2... comment faire pour ces données soit intégrés dans la listbox ( avec des checkbox ? ou les objets ne sont pas additionnable?) ... un début de réponse serait sympa en cette nuit de travail ^^ car je patauge

Merci
0
cousinhub29 Messages postés 881 Date d'inscription mardi 10 août 2010 Statut Membre Dernière intervention 16 avril 2024 333
5 sept. 2010 à 01:37
Re-,

On va donc utiliser les objets ActiveX, objets issus de la barre d'outils (BO) "Contrôles", et non "Formulaires", car les objets ActiveX sont plus faciles à coder..

Tu as sur ta feuille 1 une Listbox (nommée ListBox1), et un CommandButton (nommé CommandButton1)

Tu doubles-cliques sur le bouton de commande, tout en étant en mode création (le premier bouton de la BO "Contrôles", qui ressemble à une équerre, doit être enfoncé).
Tu arrives alors sur le code de la feuille 1, et tu as déjà ceci :

Private Sub CommandButton1_Click()
End Sub


Ensuite, tu insères ce code, pour charger ta ListBox :

Private Sub CommandButton1_Click()
Dim Cel As Range 'déclaration de la variable Cel
Me.ListBox1.Clear 'on vide la listbox au début
With Sheets("Feuil2") 'sur la feuille 2
    For Each Cel In .Range("A1:A" & .[A65000].End(xlUp).Row)
            'de la cellule A1 à la dernière cellule remplie de la colonne A (feuille 2)
        Me.ListBox1.AddItem Cel.Value 'on charge la listbox
    Next Cel 'cellule suivante
End With 'fin de l'instruction With, qui nous instanciait sur la feuille 2
End Sub


Désactive le bouton "Création", et appuie sur le bouton de commande, tu auras les noms de la feuille 2, de la cellule A1 à la dernière cellule remplie de la colonne A de la feuille 2 (tu peux modifier la colonne et/ou la première ligne...)

Bon courage
0
Merci beaucoup, je comprends déja mieux , jmattendais a une formule ... on peut utiliser les celulles donc et en plus en lui disant jusqu'au "dernier mot"

En tout cas, déjà merci... la j'avance tout doucement, je pense te recontacter sur ce post dans la journée pour te dire ou j'en suis...


Bonne nuit
0
cousinhub29 Messages postés 881 Date d'inscription mardi 10 août 2010 Statut Membre Dernière intervention 16 avril 2024 333
Modifié par cousinhub29 le 5/09/2010 à 02:00
Re-,

Ce n'est pas statique du tout, car comme expliqué, je vais jusqu'à la dernière cellule remplie de la colonne A....

Donc, si tu ajoutes des personnes, tu reviens sur la feuille 1, et tu cliques à nouveau sur le bouton...

Tous les objets s'initialisent via un code macro, et non par formule....

Tu peux néanmoins utiliser l'option "Données/Validation", afin d'alimenter une cellule contenant une liste déroulante...
Dans ce cas, il faut nommer la liste "origine", via Insertion/Nom/Définir, car on ne peut pas faire référence à une autre feuille pour alimenter cette liste

Bonne nuit
0
Oui j'ai édité mon post avant ta derniere réponse
, je n'ai vu qu'apres tes commentaires dans le code... désolé

Bonne nuit
0
Bonjour,

J'ai un peu avancé depuis ces 3heures de nuit blanche,


Je suis entrain d'essayer de remplir un calendrier (mois jour)
Faute de mieux j'ai fais comme ceci
Private Sub cb_jour_Click()
Dim j As Integer

Me.cb_jour.Clear
For j = 1 To 31
Sheets("lancement").cb_jour.AddItem j

Next j

End Sub


Le problème c'est que je n'arrive pas à faire de selection (et la garder au lieu d'avoir une case blanche) ....
Si c'est pas une bonne méthode n'hésitez pas ... je me ferais un plaisir de recommencer.

Merci
0
cousinhub29 Messages postés 881 Date d'inscription mardi 10 août 2010 Statut Membre Dernière intervention 16 avril 2024 333
5 sept. 2010 à 06:33
Re-,

C'est un combobox? (je suppose, vu le nom "cb_jour")

tout d'abord, quelle version d'excel as-tu?

Il existe des calendriers tout fait, que ce soit des objets ActiveX, ou d'autres, qu'on peut trouver sur plusieurs sites....

Je te conseille d'ailleurs de fréquenter assidûment ce site :

http://boisgontierjacques.free.fr/

Tu y trouveras une mine d'or...

Notamment un calendrier dans la rubrique "Formulaire et classes", le fichier en téléchargement "ObjetsClassesSynthèse", dans les 2 derniers onglets...

Bon courage
0
Re,


Merci pour ton aide,
J'ai excel2007,
Concernant le calendrier que tu m'as fournit, je n'y comprends pas grand chose, je n'arrive pas à dégager l'action de chaque variable/fonction.
Je suis entrain d'en chercher un plus facile, ou j'essaierais d'en faire un "mal" mais à ma façon.

Deuxième point : comment faire pour "sélectionner" un item dans une listbox ?
C'est a dire que j'ai créais une combobox avec 31valeurs en liste déroulante.. mais j'arrive pas à faire afficher dans la combobox ma selection. Comment faire?

Merci
0
Bonjour,

J'ai pas mal avancé depuis ( merci encore cousinhub29), j'ai intégré toutes mes listbox (avec leur contrôle), j'ai intégré les calendriers , et tout les bouttons qui vont avec..


J'ai maintenant un problème nouveau,
J'ai une base de données au travail (avec phpmadmin), j'ai une requête qui me permet d'avoir une liste de personne, avec leurs temps de travail...

Comment faire pour faire le lien VBA-->Phpmyadmin ?
Pour que ces données soit "copiées" dans une pages Vba et que je puisse travailler avec...


Merci beaucoup
0
des idées ? :$
0
Bonjour,

Merci pour ta réponse polux,

J'y arrive pas , de plus on me dit (des collègues) que la connexion VB et la connexion VBA n'est pas la même ....

Sinon au niveau de la réflexion, comment dois-je m'y prendre à votre avis( j'essaierais de bricoler de cette façon)

Dois-je importer ou me connecter sur la base mysql( à travers phpmyadmin).

Merci encore
0
Polux31 Messages postés 6917 Date d'inscription mardi 25 septembre 2007 Statut Membre Dernière intervention 1 novembre 2016 1 204
20 sept. 2010 à 11:06
Bonjour,

la connexion VB et la connexion VBA n'est pas la même .... ???

Je ne vois pas pourquoi. C'est une API qui est utilisée. Que ce soit en VB ou VBA ou autre langage, c'est prévu pour que ça fonctionne.
0
Bonsoir,
Merci pour ta réponse


Alors j'ai un probleme c'est que je ne peux rien installer de plus sur mon PC ( je n'y suis pas admin, et trop de restriction du fait de l'endroit où je travaille)

On me demande d'utiliser le pilote ODBC MYSQL 3.51 déjà installer.
J'ai ma base Phpmyadmin de prête
Tout mes boutons, calendrier tout de prêt
Il me manque juste la connexion que j'arrive décidement à faire ... :(
0
Polux31 Messages postés 6917 Date d'inscription mardi 25 septembre 2007 Statut Membre Dernière intervention 1 novembre 2016 1 204
21 sept. 2010 à 11:02
Bonjour,

Regarde ici : http://operatingsystem.free.fr/devel/detailtuto.php?idt=3

C'est assez bien détaillé et facile à mettre en oeuvre.
Bien que cela soit pour du VB6, ça fonctionne aussi en VBA, pour peu que l'on déclare les références indiquées.

;o)
0
Mercii beaucoup Polux

Je me suis vraiment amélioré en VBA
La connexion est établie,le requetage, l'update tout se passe bien.
Hormis Un dernier problème

J'ai voulu faire évoluer ma Macro,
en effet, j'ai voulu intégré dans ma variable Recordset
Un liste de personne selectionné par l'utilisateur et qui s'integre automatiquement dans cette requete... ça permet de d'aller chercher des données spécifiques,
Le problème étant, est que en faisant cela,ma requète devient excessivement longue et je vois que VBA me la coupe à un certain chiffre (environ 150 caractères)
Comment passer outre cette restriction de longueur ?


Ps: si quelqu'un a des questions concernant les connexions, qu'il n'hésite pas, j'ai fais un "algo" de la requête.
0
Je rectifies le recordset coupe a 255caracteres.
0
J'ai trouvé la réponse

En fait ce n'est pas le "recordset" qui coupe la chaine, en effet vba enregistre bien mes 300caracteres, il choisit juste de ne pas tout afficher (juste les 255premiers) ... donc pas de tracas, ma variable est bien enregistrée.


Voila au cas ou ça arrive à quelqu'un lors de ses manipulations VBA-SQL

ps : pour vous en assurer faites :
'Dim test
'test = "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabbccddeeffgghhiikkllmmnnoopp"
'test = Right(test, 10)
'counter = Len(test)

vous verrez qu'il affiche bien les dernieres lettres qui ne sont pas affichier pourtant la fenetre espion.


cordialement
0