IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
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

Contribuez Discussion :

USERFORM - Créer, Consulter, Modifier et Supprimer des enregistrements à l'aide d'un formulaire.


Sujet :

Contribuez

  1. #41
    Candidat au Club
    Homme Profil pro
    Enseignant
    Inscrit en
    Janvier 2016
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Marne (Champagne Ardenne)

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Janvier 2016
    Messages : 3
    Points : 3
    Points
    3
    Par défaut 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
    Homme Profil pro
    Étudiant
    Inscrit en
    Janvier 2016
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 32
    Localisation : France, Aude (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2016
    Messages : 6
    Points : 7
    Points
    7
    Par défaut
    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
    Homme Profil pro
    Inscrit en
    Mai 2013
    Messages
    11
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Mai 2013
    Messages : 11
    Points : 16
    Points
    16
    Par défaut
    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
    Homme Profil pro
    Enseignant
    Inscrit en
    Janvier 2016
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Marne (Champagne Ardenne)

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Janvier 2016
    Messages : 3
    Points : 3
    Points
    3
    Par défaut 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
    Avatar de Philippe Tulliez
    Homme Profil pro
    Formateur, développeur et consultant Excel, Access, Word et VBA
    Inscrit en
    Janvier 2010
    Messages
    12 767
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Formateur, développeur et consultant Excel, Access, Word et VBA

    Informations forums :
    Inscription : Janvier 2010
    Messages : 12 767
    Points : 28 626
    Points
    28 626
    Billets dans le blog
    53
    Par défaut
    Bonjour Fmart51,
    Sans connaître le n° de l'erreur accompagné de son message descriptif, il est difficile de vous aider.
    Si l'erreur se produit à la ligne 3 de la procédure nommée InitRowSource, affichée ci-dessous, vérifier si le contrôle ComboBox se nomme bien cboMember ou si la variable Rng est bien de type Range et fait bien référence à une plage de données (n'est pas Nothing)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    Private Sub InitRowSource()
     With Me.cboMember
     .RowSource = rng.Address(external:=True)
     .ListIndex = 0 ' Force la sélection du premier enregistrement
     End With
    End Sub
    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)
    Si une erreur se produit dans un UserForm lancé depuis une procédure module, l'erreur est signalée sur la ligne appelant le UserForm, si on lance le UserForm directement c'est la ligne où se produit l'erreur qui est mise en évidence.

    [EDIT]
    Réponse au post #41 du 21/01 à 15h12
    Bonjour phillipe, tout d'abord mercis pour votre tuto qui est excellent
    Merci pour ton appréciation.
    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
    Je ne vois pas le mot Variable dans cette procédure.
    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
    Private Sub UserForm_Activate()
     InitVariable ' Initialisation des variables
     InitData     ' Initialisation adresse liste des données + RowSource
     InitListBox  ' Initialisation du contrôle lstHobby (27/12/2015)
     ' Doit être invoquée en dernier lieu
     InitComboBox ' Initialisation ComboBox
     UserFormStatus = Status.Consultation ' Consultation par défaut
     With Me      ' Initialisation de certains contrôles
     .cmdConfirm.Visible = False: .cmdCancel.Visible = False
     .cboMember.Enabled = True: .frmMember.Enabled = False
     usfTitle     ' Titre du UserForm (Propriété Caption)
     End With
     ' Focus sur le 1er enregistrement ou l'enregistrement sélectionné dans la feuille
     With Me: .cboMember.ListIndex = Me.Tag: End With
    End Sub
    A quelle ligne se produit l'erreur, quelle en est le numéro ainsi que son descriptif ?
    Plus on a de précision mieux c'est.
    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
    Mon dernier billet : Utilisation de la fonction Dir en VBA pour vérifier l'existence d'un fichier

  6. #46
    Rédacteur
    Avatar de Philippe Tulliez
    Homme Profil pro
    Formateur, développeur et consultant Excel, Access, Word et VBA
    Inscrit en
    Janvier 2010
    Messages
    12 767
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Formateur, développeur et consultant Excel, Access, Word et VBA

    Informations forums :
    Inscription : Janvier 2010
    Messages : 12 767
    Points : 28 626
    Points
    28 626
    Billets dans le blog
    53
    Par défaut
    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
    Mon dernier billet : Utilisation de la fonction Dir en VBA pour vérifier l'existence d'un fichier

  7. #47
    Rédacteur
    Avatar de Philippe Tulliez
    Homme Profil pro
    Formateur, développeur et consultant Excel, Access, Word et VBA
    Inscrit en
    Janvier 2010
    Messages
    12 767
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Formateur, développeur et consultant Excel, Access, Word et VBA

    Informations forums :
    Inscription : Janvier 2010
    Messages : 12 767
    Points : 28 626
    Points
    28 626
    Billets dans le blog
    53
    Par défaut
    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
    Mon dernier billet : Utilisation de la fonction Dir en VBA pour vérifier l'existence d'un fichier

  8. #48
    Candidat au Club
    Homme Profil pro
    Enseignant
    Inscrit en
    Janvier 2016
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Marne (Champagne Ardenne)

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Janvier 2016
    Messages : 3
    Points : 3
    Points
    3
    Par défaut 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
    Homme Profil pro
    Chargé d'affaire
    Inscrit en
    Mai 2016
    Messages
    14
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : Liban

    Informations professionnelles :
    Activité : Chargé d'affaire

    Informations forums :
    Inscription : Mai 2016
    Messages : 14
    Points : 3
    Points
    3
    Par défaut 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
    Avatar de Philippe Tulliez
    Homme Profil pro
    Formateur, développeur et consultant Excel, Access, Word et VBA
    Inscrit en
    Janvier 2010
    Messages
    12 767
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Formateur, développeur et consultant Excel, Access, Word et VBA

    Informations forums :
    Inscription : Janvier 2010
    Messages : 12 767
    Points : 28 626
    Points
    28 626
    Billets dans le blog
    53
    Par défaut
    Bonjour,
    cependant je voudrais savoir quelle partie du code nous informe que dans l'onglet demonstration seront enregistrés les données?
    C'est la variable objet Rng qui représente la plage de données utilisée.
    Dans le premier fil de cette contribution au chapitre Déclaration des variables et constantes de portées module, la variable est déclarée en tête de module ligne 10
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Dim rng As Range           ' Plage de données traitée par le formulaire
    C'est dans la procédure InitData qui est invoquée dans la procédure événementielle UserForm_Activate (ligne 3) que la liste de données est assignée à la variable objet Rng
    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
     Set rng = shtMember.Range("A1").CurrentRegion
     With rng
      Set rng = .Offset(1).Resize(.Rows.Count - 1)
     End With
    End Sub
    shtMember est la propriété CodeName de la feuille nommée [Démonstration]
    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
    Mon dernier billet : Utilisation de la fonction Dir en VBA pour vérifier l'existence d'un fichier

  11. #51
    Candidat au Club
    Homme Profil pro
    Chargé d'affaire
    Inscrit en
    Mai 2016
    Messages
    14
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : Liban

    Informations professionnelles :
    Activité : Chargé d'affaire

    Informations forums :
    Inscription : Mai 2016
    Messages : 14
    Points : 3
    Points
    3
    Par défaut 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
    Avatar de Philippe Tulliez
    Homme Profil pro
    Formateur, développeur et consultant Excel, Access, Word et VBA
    Inscrit en
    Janvier 2010
    Messages
    12 767
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Formateur, développeur et consultant Excel, Access, Word et VBA

    Informations forums :
    Inscription : Janvier 2010
    Messages : 12 767
    Points : 28 626
    Points
    28 626
    Billets dans le blog
    53
    Par défaut
    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
    Mon dernier billet : Utilisation de la fonction Dir en VBA pour vérifier l'existence d'un fichier

  13. #53
    Candidat au Club
    Homme Profil pro
    Chargé d'affaire
    Inscrit en
    Mai 2016
    Messages
    14
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : Liban

    Informations professionnelles :
    Activité : Chargé d'affaire

    Informations forums :
    Inscription : Mai 2016
    Messages : 14
    Points : 3
    Points
    3
    Par défaut
    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
    Nom : Untitled.png
Affichages : 1511
Taille : 30,5 Ko

  14. #54
    Rédacteur
    Avatar de Philippe Tulliez
    Homme Profil pro
    Formateur, développeur et consultant Excel, Access, Word et VBA
    Inscrit en
    Janvier 2010
    Messages
    12 767
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Formateur, développeur et consultant Excel, Access, Word et VBA

    Informations forums :
    Inscription : Janvier 2010
    Messages : 12 767
    Points : 28 626
    Points
    28 626
    Billets dans le blog
    53
    Par défaut
    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
    Mon dernier billet : Utilisation de la fonction Dir en VBA pour vérifier l'existence d'un fichier

  15. #55
    Candidat au Club
    Homme Profil pro
    Chargé d'affaire
    Inscrit en
    Mai 2016
    Messages
    14
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : Liban

    Informations professionnelles :
    Activité : Chargé d'affaire

    Informations forums :
    Inscription : Mai 2016
    Messages : 14
    Points : 3
    Points
    3
    Par défaut 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
    Nom : Untitled.png
Affichages : 1510
Taille : 33,4 KoNom : Untitled2.png
Affichages : 1524
Taille : 27,2 Ko

  16. #56
    Rédacteur
    Avatar de Philippe Tulliez
    Homme Profil pro
    Formateur, développeur et consultant Excel, Access, Word et VBA
    Inscrit en
    Janvier 2010
    Messages
    12 767
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Formateur, développeur et consultant Excel, Access, Word et VBA

    Informations forums :
    Inscription : Janvier 2010
    Messages : 12 767
    Points : 28 626
    Points
    28 626
    Billets dans le blog
    53
    Par défaut
    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
    Mon dernier billet : Utilisation de la fonction Dir en VBA pour vérifier l'existence d'un fichier

  17. #57
    Candidat au Club
    Homme Profil pro
    Chargé d'affaire
    Inscrit en
    Mai 2016
    Messages
    14
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : Liban

    Informations professionnelles :
    Activité : Chargé d'affaire

    Informations forums :
    Inscription : Mai 2016
    Messages : 14
    Points : 3
    Points
    3
    Par défaut 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
    Avatar de Philippe Tulliez
    Homme Profil pro
    Formateur, développeur et consultant Excel, Access, Word et VBA
    Inscrit en
    Janvier 2010
    Messages
    12 767
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Formateur, développeur et consultant Excel, Access, Word et VBA

    Informations forums :
    Inscription : Janvier 2010
    Messages : 12 767
    Points : 28 626
    Points
    28 626
    Billets dans le blog
    53
    Par défaut
    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
    Mon dernier billet : Utilisation de la fonction Dir en VBA pour vérifier l'existence d'un fichier

  19. #59
    Futur Membre du Club
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    13
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 13
    Points : 9
    Points
    9
    Par défaut
    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
    Homme Profil pro
    Responsable de compte
    Inscrit en
    Juillet 2011
    Messages
    16
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Responsable de compte
    Secteur : Industrie

    Informations forums :
    Inscription : Juillet 2011
    Messages : 16
    Points : 6
    Points
    6
    Par défaut 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

Discussions similaires

  1. Userform : modifier et supprimer des enregistrements
    Par hylis dans le forum Macros et VBA Excel
    Réponses: 8
    Dernier message: 27/03/2015, 12h00
  2. [MySQL] supprimer des enregistrements de ma base
    Par arti2004 dans le forum PHP & Base de données
    Réponses: 5
    Dernier message: 26/06/2006, 15h08
  3. Réponses: 3
    Dernier message: 13/06/2006, 14h16
  4. Réponses: 4
    Dernier message: 14/10/2005, 09h54
  5. HELP!Comment supprimer des enregistrements de tables jointes
    Par ROOTPARIS dans le forum MS SQL Server
    Réponses: 2
    Dernier message: 10/06/2004, 16h41

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo