Je cherche a faire un classeur excel comme VBA

Fermé
Huguo90 - 16 oct. 2017 à 23:03
f894009 Messages postés 17185 Date d'inscription dimanche 25 novembre 2007 Statut Membre Dernière intervention 15 avril 2024 - 28 oct. 2017 à 07:04
Bonjour,
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



A voir également:

4 réponses

f894009 Messages postés 17185 Date d'inscription dimanche 25 novembre 2007 Statut Membre Dernière intervention 15 avril 2024 1 701
17 oct. 2017 à 07:01
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
0
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
0
f894009 Messages postés 17185 Date d'inscription dimanche 25 novembre 2007 Statut Membre Dernière intervention 15 avril 2024 1 701
Modifié le 17 oct. 2017 à 14:06
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
0
f894009 Messages postés 17185 Date d'inscription dimanche 25 novembre 2007 Statut Membre Dernière intervention 15 avril 2024 1 701 > f894009 Messages postés 17185 Date d'inscription dimanche 25 novembre 2007 Statut Membre Dernière intervention 15 avril 2024
17 oct. 2017 à 14:58
Re,
Fichier modifie pour UF Consultation boutons valider, ajouter, supprimer:
https://mon-partage.fr/f/4KNHd0Uu/
0
Hugu90 > f894009 Messages postés 17185 Date d'inscription dimanche 25 novembre 2007 Statut Membre Dernière intervention 15 avril 2024
Modifié le 17 oct. 2017 à 20:10
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
0
f894009 Messages postés 17185 Date d'inscription dimanche 25 novembre 2007 Statut Membre Dernière intervention 15 avril 2024 1 701 > Hugu90
Modifié le 17 oct. 2017 à 20:11
Re,

Ce que j'ai modifie marche pour l'userform consultation pas autre chose!!

Suite:
Ai une fois une erreur sur le nom de la feuille !!!!!!!!!! Je vais chercher, mais curieux
0
Hugu90 > f894009 Messages postés 17185 Date d'inscription dimanche 25 novembre 2007 Statut Membre Dernière intervention 15 avril 2024
17 oct. 2017 à 22:40
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
0
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 !
0
f894009 Messages postés 17185 Date d'inscription dimanche 25 novembre 2007 Statut Membre Dernière intervention 15 avril 2024 1 701
18 oct. 2017 à 07:14
Bonjour,
MOI
Non, ce sera bien plus court.

Hugu90:
Pour votre fichier, passe par la messagerie prive de CCM
0
Hugu90 > f894009 Messages postés 17185 Date d'inscription dimanche 25 novembre 2007 Statut Membre Dernière intervention 15 avril 2024
18 oct. 2017 à 10:51
Ben Le problème c'est que quand je clique sur Ajouter ou modifier ça me donne la même erreur d'execution 9. Vous n'avez pas essayer avant de me l'envoyer??
0
f894009 Messages postés 17185 Date d'inscription dimanche 25 novembre 2007 Statut Membre Dernière intervention 15 avril 2024 1 701 > Hugu90
Modifié le 18 oct. 2017 à 12:09
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ées
    With ThisWorkbook.Sheets("frais de gestion et cartes")


A supposer evidement que ce soit vous qui a ecrit le code......
0
Huguo90 > f894009 Messages postés 17185 Date d'inscription dimanche 25 novembre 2007 Statut Membre Dernière intervention 15 avril 2024
18 oct. 2017 à 13:54
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
0
Huguo90 Messages postés 64 Date d'inscription lundi 17 juillet 2017 Statut Membre Dernière intervention 30 septembre 2022 > f894009 Messages postés 17185 Date d'inscription dimanche 25 novembre 2007 Statut Membre Dernière intervention 15 avril 2024
18 oct. 2017 à 14:27
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
0
Utilisateur anonyme
26 oct. 2017 à 02:23
On y arrive doucement !

f894009, tu étais un peu optimiste sur "le poulain"...

:-)
0
f894009 Messages postés 17185 Date d'inscription dimanche 25 novembre 2007 Statut Membre Dernière intervention 15 avril 2024 1 701
26 oct. 2017 à 06:37
Bonjour HDU,

Non, p'tete pas un "poulain" .....
Me derange pas, ai beaucoup de pratique car:
Ce n'est pas à un vieux singe qu'on apprend à faire des grimaces
0
Utilisateur anonyme > f894009 Messages postés 17185 Date d'inscription dimanche 25 novembre 2007 Statut Membre Dernière intervention 15 avril 2024
27 oct. 2017 à 20:20
??
0
f894009 Messages postés 17185 Date d'inscription dimanche 25 novembre 2007 Statut Membre Dernière intervention 15 avril 2024 1 701 > Utilisateur anonyme
28 oct. 2017 à 07:04
Bonjour,
Petite explication:
Le "Me derange pas": cela ne me derange pas, ce n'est pas vous qui me dérangez.
Ca serai un comble, allons .......!
0