Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

  1. #41
    Candidat au Club
    Bonjour phillipe
    Bonjour phillipe, tout d'abord mercis pour votre tuto qui est excellent, vous avez demandé que l'on vous communique les erreurs, en lançant l'application je reçoit un message d'erreur "sub ou fonction non défini "
    Et il sélectionne Variable dans userform activate pouvez vous m'expliquer ce que j'ai mal fait s'il vous plaît

    Merci d'avance

    F

  2. #42
    Futur Membre du Club
    Bonjour Philippe et merci encore pour cet incroyable travail qui m'a beaucoup aidé, bien qu'on vous l'aie déja dit maintes fois.

    J'ai adapté votre fichie à mon utilisation les fonctions marchent tr`s bien mais j'avais quand même deux questions.

    1) tout d'abord j'ai une ligne qui engendre des erreurs :
    With Me: .cboMember.ListIndex = Me.Tag: End With
    dans le user form activate,
    le programme semble fonctionner corrrectement sans, est-elle nécessaire ?

    2) Je dois en plus du formulaire mettre en place des outils d'analyse de données par exemple ( exemple bête), la somme des âges des membres.
    La commade suppression, supprime la ligne ce qui m'engendre des soucis de #REF dans mes calculs,
    sauriez-vous comment je pourrais contourner le problème ?

    Dites moi si vous avez besoin de mon fichier en pièce jointe pour y voir plus clair.

    Merci d'avance pour votre réponse et encore merci pour cette aide indirectement précieuse !!

  3. #43
    Membre à l'essai
    Bonjour à tous,
    J'ai une erreur qui apparaît lors de l'enregistrement du fichier en "Excel prenant en charge les macros" :
    Code :Sélectionner tout -Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
     
    <?xml version="1.0" encoding="UTF-8" standalone="true"?>
     
    -<recoveryLog xmlns="http://schemas.openxmlformats.org/spreadsheetml/2006/main">
     
    <logFileName>error081880_03.xml</logFileName>
     
    <summary>Des erreurs ont été détectées dans le fichier « C:\Users\Anthony\Downloads\UserForm - CRUD (C)reate (R)ead (U)pdate (D)elete - Version 3_2.xlsm »</summary>
     
     
    -<removedRecords summary="Liste des enregistrements supprimés ci-dessous :">
     
    <removedRecord>Enregistrements supprimés: Tri dans la partie /xl/worksheets/sheet1.xml</removedRecord>
     
    </removedRecords>
     
    </recoveryLog>


    Avez-vous une idée du problème lié au format d'enregistrement ?

    Merci d'avance
    Anthony

  4. #44
    Candidat au Club
    Problème
    Bonjour phillipe, mercis pour vos tutos et vos contributions car j'ai cherché et chercher des choses comme ça pendant des mois, enfin mon problème est que j'ai adapté votre programme pour mon usage en créant mon userform et mon fichier excel, en faite j'ai copié collé ( si vous me voyez, j'ai la tête baissé je fais la honte lol) voilà après avoir copié coller et puis modifier les 3,4 choses pour que ça correspond à mon programme, quand je lance projet, VBA m'indique une ligne surligner en jaune soit c ma macro qui active mon userform soit c la ligne : .rowsource = rng.Adress(external:=true)
    Du private sub initrowsource

    Pouvez-vous m'aider ??

    Vous pouvez me joindre sur mon mail si vous le souhaitez : f.mart51@orange.fr

  5. #45
    Rédacteur

    Ce message n'a pas pu être affiché car il comporte des erreurs.
    Philippe Tulliez
    Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément. (Nicolas Boileau)
    Lorsque vous avez la réponse à votre question, n'oubliez pas de cliquer sur et si celle-ci est pertinente pensez à voter
    Mes tutoriels : Utilisation de l'assistant « Insertion de fonction », Les filtres avancés ou élaborés dans Excel
    Quelques contributions : USERFORM - Créer, Consulter, Modifier et Supprimer des enregistrements à l'aide d'un formulaire - Géolocalisation d'une adresse avec Excel et Google sans VBA

  6. #46
    Rédacteur

    Bonjour bsalles,
    Bonjour Philippe et merci encore pour cet incroyable travail qui m'a beaucoup aidé, bien qu'on vous l'aie déja dit maintes fois
    Même si c'est régulièrement dit, cela fait toujours plaisir et encourage à continuer à publier des contributions.
    1) tout d'abord j'ai une ligne qui engendre des erreurs :
    With Me: .cboMember.ListIndex = Me.Tag: End With
    dans le user form activate,
    le programme semble fonctionner corrrectement sans, est-elle nécessaire ?
    Tag est une propriété qui ne sert à rien sauf à permettre au programmeur d'y créer tout ce qui lui passe par la tête.
    Dans mon cas, je l'ai utilisée pour permettre le choix du positionnement de l'enregistrement courant. Si la longueur de Tag est égale à 0 alors Tag = 0 donc ListIndex = 0
    Il suffit de remplacer cette ligne par
    Code :Sélectionner tout -Visualiser dans une fenêtre à part
    Me.cboMember.ListIndex = 0

    ou tout autre nombre correspondant à un des éléments de la liste (de 0 à .cboMember.ListCount - 1)
    2) Je dois en plus du formulaire mettre en place des outils d'analyse de données par exemple ( exemple bête), la somme des âges des membres.
    La commade suppression, supprime la ligne ce qui m'engendre des soucis de #REF dans mes calculs,
    sauriez-vous comment je pourrais contourner le problème ?
    Il faudrait éditer la formule qui calcule cette somme. Est-ce que cette formule est une fonction dans le code VBA du UserForm ou bien dans une cellule d'excel ?
    Dans ce dernier cas, l'application n'est pas en cause car la suppression manuelle de la ligne provoquerait la même erreur.
    Il faut donc prévoir de rendre dynamique la plage contenant les données (par exemple transformer la plage en tableau) mais peut-être faudrait-il revoir le code contenu dans le UserForm.
    Une autre solution est de nommer la plage en calculant sa référence à l'aide de la fonction DECALER.
    Philippe Tulliez
    Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément. (Nicolas Boileau)
    Lorsque vous avez la réponse à votre question, n'oubliez pas de cliquer sur et si celle-ci est pertinente pensez à voter
    Mes tutoriels : Utilisation de l'assistant « Insertion de fonction », Les filtres avancés ou élaborés dans Excel
    Quelques contributions : USERFORM - Créer, Consulter, Modifier et Supprimer des enregistrements à l'aide d'un formulaire - Géolocalisation d'une adresse avec Excel et Google sans VBA

  7. #47
    Rédacteur

    Bonjour Anthony,
    Citation Envoyé par k6s33 Voir le message
    Bonjour à tous,
    J'ai une erreur qui apparaît lors de l'enregistrement du fichier en "Excel prenant en charge les macros" :
    Code :Sélectionner tout -Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    <?xml version="1.0" encoding="UTF-8" standalone="true"?>
    -<recoveryLog xmlns="http://schemas.openxmlformats.org/spreadsheetml/2006/main">
    <logFileName>error081880_03.xml</logFileName>
    <summary>Des erreurs ont été détectées dans le fichier « C:\Users\Anthony\Downloads\UserForm - CRUD (C)reate (R)ead (U)pdate (D)elete - Version 3_2.xlsm »</summary>
    -<removedRecords summary="Liste des enregistrements supprimés ci-dessous :">
    <removedRecord>Enregistrements supprimés: Tri dans la partie /xl/worksheets/sheet1.xml</removedRecord>
    </removedRecords>
    </recoveryLog>

    Avez-vous une idée du problème lié au format d'enregistrement ?
    Merci d'avance
    Anthony
    Hélas non, je n'ai pas encore rencontré ce genre de problème.
    Philippe Tulliez
    Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément. (Nicolas Boileau)
    Lorsque vous avez la réponse à votre question, n'oubliez pas de cliquer sur et si celle-ci est pertinente pensez à voter
    Mes tutoriels : Utilisation de l'assistant « Insertion de fonction », Les filtres avancés ou élaborés dans Excel
    Quelques contributions : USERFORM - Créer, Consulter, Modifier et Supprimer des enregistrements à l'aide d'un formulaire - Géolocalisation d'une adresse avec Excel et Google sans VBA

  8. #48
    Candidat au Club
    Re
    Bonjour phillipe, tout simplement je n'arrive pas à avoir la listbox et les cases a coché, sinon j'ai trouvé une astuce pour afficher le DTPicker et les combobox pré charger en faite il suffit simplement de reprendre le code de cboMember et de modifier cbo en DTPIcker et pour la combobox il faut appeller private sub combobox 1_click()
    Et écrire son code, maintenant je pense que vous savez déjà tout ca, c'est vrai que votre code pour la listbox et les case à cocher serait bien mais je n'y arrive pas pour l'instant.
    J'aimerais bien vous envoyer mon programme pour que vous y jetiez un œil mais je sais pas si c'est possible sur ce site.
    Amicalement
    FMART

  9. #49
    Candidat au Club
    information sur le fichier d'enregistrement des données saisies
    Merci énormement à vous pour ce post. cependant je voudrais savoir quelle partie du code nous informe que dans l'onglet demonstration seront enregistrés les données? et dans le cas ou ce bout de code n'existe pas comment faire pour dire où faire l'enregistrement? parceque j'aimerais bien utiliser ce code pour insérer les clients et aussi les fournisseurs. bine évidemment deux userforme et deux bouts de codes .

    merci pour votre clarification

  10. #50
    Rédacteur

    Ce message n'a pas pu être affiché car il comporte des erreurs.
    Philippe Tulliez
    Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément. (Nicolas Boileau)
    Lorsque vous avez la réponse à votre question, n'oubliez pas de cliquer sur et si celle-ci est pertinente pensez à voter
    Mes tutoriels : Utilisation de l'assistant « Insertion de fonction », Les filtres avancés ou élaborés dans Excel
    Quelques contributions : USERFORM - Créer, Consulter, Modifier et Supprimer des enregistrements à l'aide d'un formulaire - Géolocalisation d'une adresse avec Excel et Google sans VBA

  11. #51
    Candidat au Club
    RE
    Bonjour, merci pour votre rapide réponse qui m'a clarifiée au mieux le point .
    j'essai donc de changer le "sheetMember" en un autre non et il me fait sortir l'erreure suivante : "run-time error 1004 : application defined or object-defined error"


    Private Sub InitData()
    ' Redimensionnement de l'objet rng et RowSource
    Set rng = Sheet1.Range("A1").CurrentRegion =========>>> ERREURE
    With rng
    Set rng = .Offset(1).Resize(.Rows.Count - 1)
    End With
    End Sub
    en ajoutant le code sheetmember dans le nouveau sheet où je désire que l'enregistrement ai lieu

    MERCI à vous,

  12. #52
    Rédacteur

    Bonjour,
    Voir ce # File où j'ai illustré où se trouve la propriété CodeName
    De plus il faut savoir que la propriété CurrentRegion est l'équivalent de Ctrl + * ou Ctrl + A. Il faut donc que la liste commence en A1 et que la première ligne contienne les étiquettes de colonnes et que la liste des données suive.
    Philippe Tulliez
    Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément. (Nicolas Boileau)
    Lorsque vous avez la réponse à votre question, n'oubliez pas de cliquer sur et si celle-ci est pertinente pensez à voter
    Mes tutoriels : Utilisation de l'assistant « Insertion de fonction », Les filtres avancés ou élaborés dans Excel
    Quelques contributions : USERFORM - Créer, Consulter, Modifier et Supprimer des enregistrements à l'aide d'un formulaire - Géolocalisation d'une adresse avec Excel et Google sans VBA

  13. #53
    Candidat au Club
    salut,
    Mon problème ne repose pas sur la nomenclature, moi ce que je voudrais s'est utiliser le meme formulaire pour deux tab différentes
    un userform qui copie dans shtMember et un autre qui copiera dans shtMember2

  14. #54
    Rédacteur

    Bonjour,
    La contribution est basée sur un UserForm gérant une base de données.
    Sinon pour répondre partiellement à ta demande, lorsque j'utilise plusieurs listes de données dans un programme j'utilise une variable tableau
    Exemple
    Code :Sélectionner tout -Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    Option Explicit
    Dim Rng(1 To 2) As Range
     
    Sub Main()
     InitData
    End Sub
     
    Private Sub InitData()
     Dim Elem As Byte
     ' Redimensionnement de l'objet rng
     Set Rng(1) = shtClient.Range("A1").CurrentRegion
     Set Rng(2) = shtStock.Range("A1").CurrentRegion
     For Elem = 1 To 2
      With Rng(Elem)
       Set Rng(Elem) = .Offset(1).Resize(.Rows.Count - 1)
      End With
     Next
    End Sub
    Philippe Tulliez
    Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément. (Nicolas Boileau)
    Lorsque vous avez la réponse à votre question, n'oubliez pas de cliquer sur et si celle-ci est pertinente pensez à voter
    Mes tutoriels : Utilisation de l'assistant « Insertion de fonction », Les filtres avancés ou élaborés dans Excel
    Quelques contributions : USERFORM - Créer, Consulter, Modifier et Supprimer des enregistrements à l'aide d'un formulaire - Géolocalisation d'une adresse avec Excel et Google sans VBA

  15. #55
    Candidat au Club
    on finira par se comprendre et trouvez la solution :)
    Vous avez vous M. fais un userform pour une saisie qui sera insérer dans le tableau nommé demonstration.

    Moi ce que je voudrais s'est :
    1-utiliser votre useform et le code qui s'y attache pour faire des insertion dans le tableau demonstration
    2- faire un autre meme formulaire(userform2) du meme genre et style que le premier et ecrire le code (code userform2) en arrière plan qui devra enregistrer les données saisie dans un deuxieme tableau que j'appel demonstration2.

    j'ai tenté votre proposition et j'ai toujours la même erreure lors du debogage , j'ai modifié le code du userform UIClient , moi je veux a chaque userform son code .
    j'ai tenté de copier le code et le coller à un nouveau userform , j'obtiens soit la variable "status" est deja utilisé soit erreur de débogage a la ligne
    Set Rng = .Offset(1).Resize(.Rows.Count - 1)
    ci dessous les screenshots apres votre dernière propisition

    DESOLE M. je solicite votre aide, merci pour votre compréhension

  16. #56
    Rédacteur

    Bonjour,
    On s'est mal compris.
    Le code que je t'ai donné est un exemple de l'utilisation d'une variable objet dimensionnée que j'utilise lorsque je dois dans une application utiliser plusieurs liste de données mais pas du tout à intégrer cela dans le code proposé dans cette contribution.

    Comme je l'ai indiqué le code et l'exemple utilisé dans ma contribution porte sur un UserForm utilisant une seule table de données donc soit tu utilises deux UserForm utilisant chacun sa propre liste de données soit tu passes sur autre chose comme par exemple l'utilisation d'un module de classe, un UserForm avec un contrôle mutlipage où chaque page gère une liste de données (avec variable dimensionnée) et en t'inspirant des différents codes proposés ici. C'est suffisamment structuré pour le faire aisément.

    Je ne peux pas apporter une réponse pertinente à ta question dans cette discussion car cela nécessiterait une autre contribution qui mine de rien prends quelques heures comprenant développement, tests et rédaction sur le sujet.
    Philippe Tulliez
    Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément. (Nicolas Boileau)
    Lorsque vous avez la réponse à votre question, n'oubliez pas de cliquer sur et si celle-ci est pertinente pensez à voter
    Mes tutoriels : Utilisation de l'assistant « Insertion de fonction », Les filtres avancés ou élaborés dans Excel
    Quelques contributions : USERFORM - Créer, Consulter, Modifier et Supprimer des enregistrements à l'aide d'un formulaire - Géolocalisation d'une adresse avec Excel et Google sans VBA

  17. #57
    Candidat au Club
    RE
    Merci M.

    oui sa risque de prendre du temps . donc si j ecomprends bien ce bout de code lié à un seul userform ne peut pas etre copié comme code d'un second userform? sinon avez vous des tutos avec des exemples exécutables.?

    merci encore une foi pour votre aide

  18. #58
    Rédacteur

    Bonjour,
    donc si j ecomprends bien ce bout de code lié à un seul userform ne peut pas etre copié comme code d'un second userform?
    Ce n'est pas ce que j'ai écrit dans mes réponses.
    On peut utiliser autant de UserForm qu'il n'y a de liste de données mais le code en exemple ne gère qu'une seule liste par UserForm mais bien entendu il y a des modifications à faire dans quelques procédures dont les principales sont
    1. InitData
    2. ReadRecord
    3. WriteRecord

    La procédure InitData
    Code :Sélectionner tout -Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    Private Sub InitData()
     ' Redimensionnement de l'objet rng et RowSource
     Set rng = shtClient.Range("A1").CurrentRegion ' CodeName de la feuille
     With rng
      Set rng = .Offset(1).Resize(.Rows.Count - 1)
     End With
    End Sub

    Dans les procédures ReadRecord et WriteRecord, il y a bien entendu lieu d'adapter la référence aux colonnes en fonction des contrôles se trouvant dans le UserForm

    D'autres procédures comme
    • InitVariable
    • UserFormActivate

    sont à vérifier parce-que dans l'exemple, il y a gestion de la colonne nommée Sexe par un OptionButton (dont on remplace les lettres par les valeurs TRUE et FALSE

    Code de la procédure InitVariable où l'on peut voir que la ligne 4 dans cet exemple est inutile
    Code :Sélectionner tout -Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    Private Sub InitVariable()
     lstStatusText = Split(StatusLabel, ";")
     With Me
      '.optMale.GroupName = "Gender": Me.optFemale.GroupName = "Gender"
      If Len(.Tag) = 0 Then .Tag = 0 ' La propriété Tag contient le numéro de l'élément (CurrentRecord) à sélectionner à l'ouverture du UserForm
     End With
    End Sub


    Dans une réponse du 27/12/2015, j'ai proposé une solution pour faire une liste à choix multiple, il est évident que si cette option n'est pas utilisée, il n'y a donc pas de contrôle ListBox prévu dans le UserForm et il faut bien entendu dans ce cas là, supprimer l'appel à InitListBox suite à une réponse.

    Je rappelle encore une fois que cette contribution est un exemple pour montrer comment structurer un UserForm d'une manière telle que les modifications et la maintenance sont aisées.

    sinon avez vous des tutos avec des exemples exécutables.?
    Celui-ci en est un et j'ai intégré dans le classeur téléchargeable, une feuille nommée Lien qui contient cinq liens.
    Philippe Tulliez
    Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément. (Nicolas Boileau)
    Lorsque vous avez la réponse à votre question, n'oubliez pas de cliquer sur et si celle-ci est pertinente pensez à voter
    Mes tutoriels : Utilisation de l'assistant « Insertion de fonction », Les filtres avancés ou élaborés dans Excel
    Quelques contributions : USERFORM - Créer, Consulter, Modifier et Supprimer des enregistrements à l'aide d'un formulaire - Géolocalisation d'une adresse avec Excel et Google sans VBA

  19. #59
    Futur Membre du Club
    Bonjour Philippe,

    Bravo pour ce post qui m'est très instructif.

    Avec le code suivant qui se trouve sur la worksheet "Démonstration", on lance le userform en double cliquant sur les données de la feuille.
    As-tu une solution pour ouvrir le userform en mode modification en fonction de la ligne sur laquelle on double clique.

    Code :Sélectionner tout -Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
     If Not Intersect(Target, Me.Range("A1").CurrentRegion) Is Nothing Then
      Cancel = False
      With usfDemo
      .Tag = Target.Row - 2
      .Show
      End With
      Cancel = True
     End If
    End Sub



    Merci d'avance
    Citaro

  20. #60
    Futur Membre du Club
    Champ de recherche sur cboMember
    Bonjour au forum. Bonjour Philippe et merci beaucoup pour ce super fichier.

    Je l'ai utilisé comme base de plusieurs projets et tout fonctionne très bien.
    Je me permets de poster sur ce sujet car après plusieurs jours de recherche, j'ai un petit problème qui à mon avis, pour vous va sembler ridicule.

    Je souhaiterais pouvoir effectuer une recherche depuis la combobox cboMember sur plusieurs colonne de ma base de donnée.
    En gros je tape le début d'un nom de projet ou du code projet et j'ai les résultats qui s'affichent dans la combobox.
    J'ai lu énormément de chose concernant le sujet sur divers forums mais malgré plusieurs tentatives, je n'arrive pas à adapter ces solutions dans ce programme.

    Je viens donc vers vous afin de vous demander des conseils pour au moins me débloquer.

    Par avance merci à vous.

    Cordialement