Je cherche a faire un classeur excel comme VBA
f894009 Messages postés 17417 Date d'inscription Statut Membre Dernière intervention -
Je suis entraide ce construire 1 fichier excel avec 5 feuilles different et 5 formulaires différents. Mon objectif c'est de faire sort que chaque de feuilles correspond a un formulaire comment dans Access. Je veux faire sur une feuille d'accueil 5 boutons qui permettent d'ouvrir chacune un formulaire après l'autre, comme dans Access. Le problème Comment m'y prendre sachant que le plus important pour moi c'est Le code Userform_initialize dans chacune des formulaire et sur un bouton valider qui permet d'enregistrer à partir du formulaire l'information correspond dans sa feuille. Mais ça ne marche pas. ça me donne toujours "erreur d'exécution 9" Voici les codes Juste pour un formulaire.
Private Sub UserForm_Initialize()
Dim Nosiren As String
'Affectation du numéro de matricule du salarié dans la variable
Nosiren = InputBox("Veuillez saisir le numéro de SIREN", "MODIFIER LA TARIFICATION DE LA CONCURRENCE")
Me.Txtnosiren = Nosiren
Dim MaLigne As Integer
For MaLigne = 2 To 80
If Cells(MaLigne, 1) = Nosiren Then
Me.txtnomclient = Cells(MaLigne, 2)
Me.cmbportefeuille = Cells(MaLigne, 3)
Me.txtprixst1 = Cells(MaLigne, 4)
Me.txtprixdero1 = Cells(MaLigne, 5)
Me.txtvolume1 = Cells(MaLigne, 6)
Me.txtprixst2 = Cells(MaLigne, 7)
Me.txtprixdero2 = Cells(MaLigne, 8)
Me.txtvolume2 = Cells(MaLigne, 9)
Me.txtprixst3 = Cells(MaLigne, 10)
Me.txtprixdero3 = Cells(MaLigne, 11)
Me.txtvolume3 = Cells(MaLigne, 12)
Me.txtprixst4 = Cells(MaLigne, 13)
Me.txtprixdero4 = Cells(MaLigne, 14)
Me.txtvolume4 = Cells(MaLigne, 15)
Me.txtprixst5 = Cells(MaLigne, 16)
Me.txtprixdero5 = Cells(MaLigne, 17)
Me.txtvolume5 = Cells(MaLigne, 18)
Me.txtprixst6 = Cells(MaLigne, 19)
Me.txtprixdero6 = Cells(MaLigne, 20)
Me.txtvolume6 = Cells(MaLigne, 21)
Me.txtprixst7 = Cells(MaLigne, 22)
Me.txtprixdero7 = Cells(MaLigne, 23)
Me.txtvolume7 = Cells(MaLigne, 24)
Me.txtprixst8 = Cells(MaLigne, 25)
Me.txtprixdero8 = Cells(MaLigne, 26)
Me.txtvolume8 = Cells(MaLigne, 27)
End If
Next MaLigne
End Sub
Private Sub btnvalider_Click()
Dim i As Integer
Dim valider As String
valider = Txtnosiren.Value
With ThisWorkbook.Sheets("cheque et monetique")
For i = Range("A" & .Rows.Count).End(xlUp).Row To 2 Step -1
If Range("A" & i).Value = valider Then
Range("A" & i).Value = Txtnosiren.Value
Range("B" & i).Value = txtnomclient.Value
Range("C" & i).Value = cmbportefeuille.Value
Range("D" & i).Value = txtprixst1.Value
Range("E" & i).Value = txtprixdero1.Value
Range("F" & i).Value = txtvolume1.Value
Range("G" & i).Value = txtprixst2.Value
Range("H" & i).Value = txtprixdero2.Value
Range("I" & i).Value = txtvolume2.Value
Range("J" & i).Value = txtprixst3.Value
Range("K" & i).Value = txtprixdero3.Value
Range("L" & i).Value = txtvolume3.Value
Range("M" & i).Value = txtprixst4.Value
Range("N" & i).Value = txtprixdero4.Value
Range("O" & i).Value = txtvolume4.Value
Range("P" & i).Value = txtprixst5.Value
Range("Q" & i).Value = txtprixdero5.Value
Range("R" & i).Value = txtvolume5.Value
Range("S" & i).Value = txtprixst6.Value
Range("T" & i).Value = txtprixdero6.Value
Range("U" & i).Value = txtvolume6.Value
Range("V" & i).Value = txtprixst7.Value
Range("W" & i).Value = txtprixdero7.Value
Range("X" & i).Value = txtvolume7.Value
Range("Y" & i).Value = txtprixst8.Value
Range("Z" & i).Value = txtprixdero8.Value
Range("AA" & i).Value = txtvolume8.Value
Unload monetique_cheque
End If
Next i
End With
End Sub
4 réponses
Un utilisateur cherche à créer un classeur Excel comportant 5 feuilles et 5 formulaires, chacun lié à une feuille, et à ouvrir les formulaires depuis une page d'accueil avec 5 boutons. Plusieurs répondants mettent en avant la difficulté autour de l'initialisation des UserForm_Initialize et de l'enregistrement sur chaque feuille, le tout pouvant provoquer une erreur d'exécution 9. Des conseils portent sur la vérification des noms de feuilles, l'adresse des plages, et la séparation des actions d'initialisation et de sauvegarde, avec des méthodes comme Find, CountIf et Copy/Paste. En complément, certains proposent de tester les formulaires individuellement et d'utiliser des messages d'erreur ciblés pour localiser rapidement les causes et éviter des phases de débogage prolongées.
-
Bonjour,
1/ Private Sub UserForm_Initialize()
il faut preciser la feuille ou vous reeuperez les donnees par:
With Worksheets("la feuille")
et a la fin
end With
mettre un point devant les Cells....
2/Private Sub btnvalider_Click()
Vous avez bien With ThisWorkbook.Sheets("cheque et monetique")
mais pas les points devant les Range....
La recherche peut se faire sans boucle For i = Range("A" & .Rows.Count).End(xlUp).Row To 2 Step -1 -
Merci f894009n Mais ça ne marche toujours pas.
J'ai mis With Worksheets("cheque et monétique"), mais ça ne marche pas. et j'essaie de mettre un point devant les "cells ça conne erreur. C'est deux tableaux que je suis entrain de faire, qui ont le même structure, je vais vous passer ce le deuxième avec tous les formulaires déjà fais mais que j'arrive pas a lié à leurs feuilles respectives.
Si vous pouvez faire apparaitre dans le formulaire "consultation" que j' ai commencer a code les éléments de la feuilles " consultation de compte", et aussi avec le bouton btnAjouter d'ajouter un element même dans le commentaire avec le btn ajouter d'ajouter un nouvau client sur la feuille exact que je veux et le btnsupprimer de supprimer un client se serai gentil de votre part Merci.
Voici le base dans ce lien
http://fromsmash.com/926194b8-b31f-11e7-830d-0a39043893bc-
Re,
Je regarde la chose
A+
Suite:
Quezaco dans uf consultation?????Private Sub btnvalider_Click() End Sub Dim i As Integer Dim valider As String valider = Txtnosiren.Value With ThisWorkbook.Sheets("consultation de compte") For i = Range("A" & .Rows.Count).End(xlUp).Row To 2 Step -1 If Range("A" & i).Value = valider Then Range("A" & i).Value = Txtnosiren.Value Range("B" & i).Value = txtnomclient.Value Range("C" & i).Value = cboportefeuille.Value Range("D" & i).Value = Cbonom1.Value Range("E" & i).Value = txtprixst1.Value Range("F" & i).Value = txtprixst1.Value Range("G" & i).Value = txtcom1.Value Range("H" & i).Value = Cbonom2.Value Range("I" & i).Value = txtprixst2.Value Range("J" & i).Value = txtprixst2.Value Range("K" & i).Value = txtcom2.Value Range("L" & i).Value = Cbonom3.Value Range("M" & i).Value = txtprixst3.Value Range("N" & i).Value = txtprixst3.Value Range("O" & i).Value = txtcom3.Value- Les boutons Valider, Ajouter et Supprimer ne fonctionne pas. Essaie de texter le code pour voir ça donne le même erreur d'execution 9. Je veux juste avoir un truc qui fonctionne pr l'UF consulation et je ferrai les autres. j'ai encore un autre problème avec un code VBA Acess. Mais le fichier est un peu confidentiel, Je ne peux pas le partager si tu veux passe moi votre mail personnel ou si non ecris moi sur ***@*** comme je te le transmets. Merci
- En faite vais vous présente tous le projet comme ça vous pouvez voir si vous pouvez m'aider ou pas. En faite j'aimerais faire une feuille qui centralise tous les informations pour quand la personne qui sur valider pour que consolider quand il rajoute une personne pour qu'il ajouter cette personne la. L'objectif c'est de pouvoir faire dans ce tableau des tableaux croiser dynamique et des tableaux de bord avec des images comme le votre. Mon problème c'est dans le code Valider. je souhaite enregistre aussi le même information automatiquement les mêmes informations dans la grande feuille. Merci
-
-
Allez, je parie une discussion de 100 messages....
Voir https://forums.commentcamarche.net/forum/affich-34732023-faire-resortir-des-a-b-c-d-dans-un-formulaire
Bon courage !-
-
-
Bonjour,
En effet une anerie que vous avez ecrite dans procedure:Private Sub btnajouter_Click() Me.Txtnosiren = "" Me.txtnomclient = "" Me.cboportefeuille = "" Me.Cbonom1 = "" Me.txtprixst1 = "" Me.txtprixst1 = "" Me.txtcom1 = "" Me.Cbonom2 = "" Me.txtprixst2 = "" Me.txtprixdero2 = "" Me.txtcom2 = "" Me.Cbonom3 = "" Me.txtprixst3 = "" Me.txtprixdero3 = "" Me.txtcom3 = ""
Et un copie/foire d'une variable par moi que vous devriez facilement trouver
Pour supprimer, vous avez mis ce nom de feuille, est-ce le bon ??
'On se positionne la feuille de la source de donnéesWith ThisWorkbook.Sheets("frais de gestion et cartes")
A supposer evidement que ce soit vous qui a ecrit le code...... -
je ne suis pas trop douer en VBA, mais le code que vous avez mis au debut , c'est un code qui permets de réinitialiser a vide le le formulaire pas de faire des ajouts je pense.
Je voudrais juste savoir si vous avez essayé le code que vous m'avez envoyer le code juste pour consultation? je veux juste que se soit bon pour consultation. pares je vais essayer de l'appliquer aux autres formulaires -
Bonjour
Voici le reste du travail Je veux essayer de faire un truc bcp plus complexe c'est la consolidation horizontale de tous les feuilles tout en gardant uniquement les 3 premières colonnes de la 1ère feuille et dans les autres je vais prendre tous les autres feuilles sauf les 3 première lignes.
Parce que 1ère feuille contient les SIREN Nom et portefeuille, ces informations vont être constant et ne vont pas changer d'une feuille à l'autre mais je vais prendre pour tous les autres feuilles les autres colonnes saufs les 3 premiers qui sont constant. Mon objectif derrière ça c'est de faire des tableaux croisés dynamiques avec tous c'est infos.
J'ai trouvé ça sur internet ça permet de vider un feuille et de remplir verticalement mais moi c'est horizontalement et avec les autres subtilités que je dis au début.
'declaration de variables
Dim i As Integer
Dim j As Integer
Dim dernierligne As Integer
Dim LastRowconolidation As Integer
Sub effacedonnees()
Worksheets("consolidation").Select
Rows("3:1000").Select
Selection.Clear
Range("A3").Select
End Sub
Sub consolider()
Application.ScreenUpdating = False
effacedonnees
For j = 1 To 6 'Pourcours des feuilles important
Sheets(j).Select
Derniereligne = Range("A1000").End(xlUp).Row
For i = 6 To dernierligne
Sheets(j).Select
Rows(i).Select
Selection.Copy
Sheets("consolidaztion").Select
LastRowconsolidation = Range("A1000").End(xlUp).Row + 1
ActiveSheet.Paste
Application.CutCopyMode = False
Next i
Next j
Application.ScreenUpdating = True
MsgBox "La consolidation est terminé..... ", vbOKOnly + vbInformation, " Information"
End Sub
-
-
On y arrive doucement !
f894009, tu étais un peu optimiste sur "le poulain"...
:-)