Je cherche a faire un classeur excel comme VBA

Huguo90 -  
f894009 Messages postés 17417 Date d'inscription   Statut Membre Dernière intervention   -
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

4 réponses

Résumé de la discussion

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.

Généré automatiquement par IA
sur la base des meilleures réponses
  1. f894009 Messages postés 17417 Date d'inscription   Statut Membre Dernière intervention   1 717
     
    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
  2. Hugu90
     
    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
    1. f894009 Messages postés 17417 Date d'inscription   Statut Membre Dernière intervention   1 717
       
      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
      1. f894009 Messages postés 17417 Date d'inscription   Statut Membre Dernière intervention   1 717 > f894009 Messages postés 17417 Date d'inscription   Statut Membre Dernière intervention  
         
        Re,
        Fichier modifie pour UF Consultation boutons valider, ajouter, supprimer:
        https://mon-partage.fr/f/4KNHd0Uu/
        0
      2. Hugu90 > f894009 Messages postés 17417 Date d'inscription   Statut Membre Dernière intervention  
         
        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
      3. f894009 Messages postés 17417 Date d'inscription   Statut Membre Dernière intervention   1 717 > Hugu90
         
        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
      4. Hugu90 > f894009 Messages postés 17417 Date d'inscription   Statut Membre Dernière intervention  
         
        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
  3. MOI
     
    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
    1. f894009 Messages postés 17417 Date d'inscription   Statut Membre Dernière intervention   1 717
       
      Bonjour,
      MOI
      Non, ce sera bien plus court.

      Hugu90:
      Pour votre fichier, passe par la messagerie prive de CCM
      0
    2. Hugu90 > f894009 Messages postés 17417 Date d'inscription   Statut Membre Dernière intervention  
       
      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
    3. f894009 Messages postés 17417 Date d'inscription   Statut Membre Dernière intervention   1 717 > Hugu90
       
      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
    4. Huguo90 > f894009 Messages postés 17417 Date d'inscription   Statut Membre Dernière intervention  
       
      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
    5. Huguo90 Messages postés 87 Statut Membre > f894009 Messages postés 17417 Date d'inscription   Statut Membre Dernière intervention  
       
      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
  4. Utilisateur anonyme
     
    On y arrive doucement !

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

    :-)
    0
    1. f894009 Messages postés 17417 Date d'inscription   Statut Membre Dernière intervention   1 717
       
      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
      1. Utilisateur anonyme > f894009 Messages postés 17417 Date d'inscription   Statut Membre Dernière intervention  
         
        ??
        0
      2. f894009 Messages postés 17417 Date d'inscription   Statut Membre Dernière intervention   1 717 > Utilisateur anonyme
         
        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