• Initiateur de la discussion Initiateur de la discussion seb33
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

seb33

XLDnaute Junior
Bonjour,

utilisant régulièrement excel (en fait plusieurs heures par jour), je me suis fait un gros fichier (10 pages excel) de calcul 😛 .
voulant améliorer le rendu et les calculs, je souhaiterai me faire un 'petit programme' présentable (je vais peut etre embaucher du personnel et mon fichier excel=gros bordel😕)

Pour cela, j'ai créé la plateforme avec VB (en fait je me suis fait un Userform qui me donne le logiciel complet, mais sans aucune formule).
n'ayant pas le temps d'apprendre VB complètement et utilisant office 2007 (donc pas bcp de site internet pour les vrais débutants), je souhaiterai n'utiliser que des liens d'affichage pour ma plateforme.

Ainsi, lorsque je tape un text ou un chiffre dans une case de la plateforme, je l'envoie dans une cellule en tapant par exemple:
Sub reference_Change()
Application.Range("'Données projet'!$b$3").Value = reference
End Sub
avec reference=nom du controle où je rentre la référence du client

Mais en gros c'est tout ce que je sais faire.

Ainsi, pourriez vous, svp, m'expliquer par l'exemple (je visualise mieux):
- comment faire pour que ma plateforme s'ouvre seule lorsque j'ouvre mon fichier excel (je sais c'est la base, mais je suis nul)
- comment faire pour avoir l'inverse de mon petit code, c'est à dire que des données de mes pages excel s'affiche sur ma plateforme à l'endroit voulu.

Voilà, en sachant que en gros office 2007 c'est office 2003 mais avec une présentation complètement différente.
merci d'avance
sebastien
 
Re : question VB

Bonjour Seb33 🙂,
Quand tu dis m'expliquer par l'exemple, cela signifie bien décomposer l'action en postant un exemple, ou joindre un fichier d'exemple?
Pour l'explication:
Tu souhaites ouvrir ton USF à l'ouverture. Pour cela, tu vas sous VBA dans l'explorateur d'objet et dans le code de ThisWorkbook, tu colles:
Code:
Private Sub Workbook_Open()
    USF.Load
End Sub
Où "USF" est bien sur le nom de ton USF.
Ensuite, dans le code de ton USF, tu colles:
Code:
Private Sub UserForm_Initialize()
    ListBox1.Value = Cells(A1)
    ComboBox1.Value = Cells(A2)
    ....
End Sub
Où tu vas chercher les valeurs qui t'intéressent.
Je pense que c'est déjà un début. A te lire pour la suite des opérations.
Bon courage 😎.
 
Re : question VB

tout d'abord merci pour ta réponse.
pour moi valeur par l'exemple, c'est exactement ce que tu as fait (pas besoin de fichier, mais mettre les lignes de codes avec des exemples réels (pas comme sur l'aide VB de office où je ne m'y retrouve jamais).

Pour les données, je vais les chercher directement dans le fichier excel à qui appartient la plateforme créée.
la voici en exemple (ne regardes pas les formules dans les feuilles excel, il s'agit de mon fichier de tests de nouvelles formules).
voici le fichier: http://www.panneau-solaire-photovoltaique.com/telechargement/Schematisation.rar

merci d'avance
 
Re : question VB

Re Seb33 🙂,
Beau projet, bien préparé 😉.
Je confirme mon premier message: remplace simplement USF.load par logiciel.show (petite erreur de syntaxe) et ListBox1.Value = Cells(A1) par nom1.Value = Sheets("Présentation").Cells(B5).Formula et ainsi de suite.
A + et bon courage 😎
 
Re : question VB

rebonjour.

pour l'ouverture du fichier, c'est ok ca fonctionne impeccable.
Par contre, pour la selection des cellules:
Private Sub UserForm_Initialize()
ListBox1.Value = sheet("xxx").Cells(A1).formula
End Sub


ca ne marche pas (ou alors pas comme je le pensais).
en effet, en utilisant
Sub reference_Change()
Application.Range("'Données projet'!$b$3").Value = reference
End Sub

j'ai un changement immédiat, juste en tapant le text sur ma plateforme

en prenant l'ordre inverse (envoi des données de la feuille vers la plateforme) rien ne se passe.
n'y a t il pas une solution pour que cela se fasse de la meme manière (sinon je vois le truc où il faut 'nettoyer' le formulaire à chaque ouverture, puis lancer un code pour rechercher chaque donné...je ne maitrise pas assez, voir pas du tout pour faire ca)?

désolé pour toutes ces questions.
 
Re : question VB

Bonjour Seb 🙂,
La procédure Initialize charge les données de ton USF quand tu l'ouvres. Logiquement, les données de tes feuilles ne doivent pas changer pendant que l'USF est ouvert. Maintenant, si tu veux par exemple passer du client 1 au client 2, il va falloir faire des procédures sur le Change du combo box...
Le problème qui va se poser, c'est que tu as déjà une procédure qui décharge dans la feuille à chaque changement, donc tu ne pourras pas associer à cette même procédure le chargement de la feuille vers l'USF 😕.
Une solution, certe un peu lourde, mais qui devrait fonctionner, c'est de prévoir sur ton USF une bascule entre l'état "Nouveau" et l'état "Edition", ce qui te permettra d'associer un test à chaque procédure Change pour savoir si tu te contentes de remplacer les valeurs dans les feuilles, ou si au contraire tu recharges différentes parties de ton formulaire en fonction de ce que tu viens de changer dans un combo...
Bon courage 😎
 
Re : question VB

salut.
je n'y arrive pas.
en partant de ton explication (initialize contre changement en cours de route), j'ai ajouté un bouton et j'ai fait:
private sub bouton_click()
balblabla
end sub

à la place du blabla, j'ai essayé toutes les déclinaisons que je connais pour faire que la textbox ayant pour nom "edfbat1" affiche la valeur de la cellule B1 de la feuille "demarrage".

impossible.
dans le meilleur des cas, rien ne se passe, dans le pire, une erreur apparait.

cela ne me derrange pas que ca prenne 3 plombes à calculer (je ne suis pas pressé, car cette plateforme me fera passer de 1/2 jour de travail à 1 heure de travail par étude, donc si ca prend 2 heures, je suis toujours gagnant), mais il faut pour moi que le code soit simple (pas besoin de routine de boucle ou autre, je préfère les créer artificiellement dans un onglet boucle avec une simple formule du type ET OU SI.
🙁
 
Re : question VB

Bonjour Seb 🙂,
Je viens d'aller faire quelques tests sur ton fichier, et je commence à comprendre où est le problème.
Mes premières réponses ne tenaient pas compte que tu utilisait du multipage (ce que je n'avait pas encore utilisé pour mon compte 😱).
Essaie ce code :
Code:
Private Sub MultiPage1_Change()
MsgBox (MultiPage1.Value)
End Sub
et ouvre ton USF en changeant d'onglet, je pense que c'est le début de la clé...
Du fait, tu va pouvoir rentrer un N° de référence déjà rentré, et en associant des tests sur la valeur de ton multipage, tu va pouvoir remplir tes onglets.
Code:
Private Sub MultiPage1_Change()
If MultiPage1.value = 1 then
     nom1 = Sheets("Présentation").Cells(B5).Formula
     prenom1 = Sheets("Présentation").Cells(...)
End If
If MultiPage1.value = 2 then
     ...
     ...
End If
End Sub
Dis moi si j'ai mieux compris... 😉
 
Re : question VB

je teste ca (yes avec un peu de chance tu as la bonne solution 😉 )
je te tiens au courant

toujours un probleme d'excécution 1004 qui renvoie sur la ligne:
nom1 = Sheets("Présentation").Cells(B5).Formula
...
 
Dernière édition:
Re : question VB

après différents tests, j'ai vraiment l'impression que c'est la ligne suivante qui n'est pas bonne:
nom1 = Sheets("Presentation").Cells(b5).Formula


je ne vois pas du tout pourquoi....

j'ai essayé avec nom1.Value; cells("'nomfeuille'!cellules").formula, ou .value,.rien du tout.

rien n'y fait...
 
Re : question VB

suite des 2 derniers messages

après quelques essais, toujours rien, nada, kaput, je suis nul...

donc une petite suggestion, puisque le txtbox ne marche pas, mais que les listbox fonctionne (qui me permettrait aussi d'avancer dans mon programme vers une version qui devait venir bcp plus tard):

1 - je suis aujourd'hui sur mon fichier test.xls qui sera ma matrice de travail (ouvrture par défaut)
2- Je fait un USF1: voulez vous ouvrir un fichier nouveau ou ouvrir un ancien fichier.- je créais donc une nouvelle ref.
3- je rentre les données à entrer dans mon usf2 (qui est le logiciel et qui s'ouvrira par défaut pour tout nouveau client)
4- je fais créer un fichier excel me servant de base de donnée (je ne créais pas de BD, j'y connais absolument rien, juste un support). le nom sera la référence entrée dans le logiciel
5- j'enregistre et zou ma journée est finie
6- le lendemain, j'ouvre mon test.xls et je veux retravailler sur mon client de la veille (ref ex T-01-12)
7- un USF3 (par ex fiche client) s'ouvre, qui n'est composé que de listbox et qui peuvent reproduire les données des cases du fichier excel (à l'inverse de mon probleme actuel avec les txtbox)
8- je créais une commande (bouton) qui me permet une synchrinisation avec mon usf2 (logiciel)
9- et là, ma question est peut-on d'une listbox d'un usf mettre la valeur dans une txtbox d'un autre usf (mais d'un meme classeur puisque mes 3 usf seront sur le meme classeur).
10- je modifie facilement les données dans le logiciel, je réenregistre et hop, client suivant...

je sais j'ai l'esprit un peu tordu, mais comme je ne connais pas trop le VB, j'applique la methode du basic de mon ancien oric1: ligne par ligne on tape, quitte à faire des détours).😱
 
Re : question VB

Bonjour Seb 🙂,
Pour "passer" une valeur d'un USF à l'autre, tu va rencontrer un problème, c'est qu'il va falloir décharger un USF pour charger l'autre. Une solution, c'est de rendre publique les variables dans ton module.
Code:
Public toto as String
Tant que la macro s'exécute, tu conserves le contenu de la variable.
Bon courage 😎
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

  • Question Question
Microsoft 365 recherche idée
Réponses
6
Affichages
817
Retour