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

Macros et VBA Excel Discussion :

erreur quand je modifie la base de données avec userform3


Sujet :

Macros et VBA Excel

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Juillet 2008
    Messages
    33
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2008
    Messages : 33
    Points : 12
    Points
    12
    Par défaut erreur quand je modifie la base de données avec userform3
    Bonjour,
    j'ai une erreur lorsque je modifie la fiche sur la init cbb via le bouton modifier dans le userform3
    je joins la copie écran et le fichier exemple pour plus de compréhension.

    merci d'avance pour votre patience !

    Nom : erreur init cbb.png
Affichages : 162
Taille : 117,0 Ko
    Fichiers attachés Fichiers attachés

  2. #2
    Membre confirmé
    Homme Profil pro
    Ingénieur qualité méthodes
    Inscrit en
    Mars 2021
    Messages
    334
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur qualité méthodes
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2021
    Messages : 334
    Points : 602
    Points
    602
    Par défaut
    Salut, c'est quoi l'erreur ?

    Sinon essaye de mettre le .cells(j,I).value entre parenthèses. Je crois que c'est requis quand on utilise additem.

  3. #3
    Membre à l'essai
    Profil pro
    Inscrit en
    Juillet 2008
    Messages
    33
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2008
    Messages : 33
    Points : 12
    Points
    12
    Par défaut
    déjà merci pour votre aide,
    par-contre, je ne comprends pas ce que je dois faire, pouvez-vous m'expliquer, je suis débutante...

  4. #4
    Expert confirmé Avatar de Patrice740
    Homme Profil pro
    Retraité
    Inscrit en
    Mars 2007
    Messages
    2 475
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 70
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Retraité
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Mars 2007
    Messages : 2 475
    Points : 5 630
    Points
    5 630
    Par défaut
    Bonjour,

    @ChristianBosch
    Citation Envoyé par ChristianBosch Voir le message
    Sinon essaye de mettre le .cells(j,I).value entre parenthèses. Je crois que c'est requis quand on utilise additem.
    Non absolument pas, au contraire il ne faut pas de parenthèse dans ce cas.
    Des parenthèses excédentaires, c'est une erreur qu'on voit trop souvent.
    Avec VBA, la règle des parenthèses peut être déroutante :
    - obligatoire pour les fonctions VBA
    - pour les arguments des méthodes : uniquement dans le cas où le résultat de la méthode est utilisé comme variable exemple :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    'Argument fourni sans parenthèse :
    Workbooks.Open nomFichier
    MaProcédure maVariable
    'Parenthèse obligatoire :
    Set wbk = Workbooks.Open(nomFichier)  
    Call MaProcédure(maVariable)
    @grib1903
    Citation Envoyé par grib1903 Voir le message
    Bonjour,
    j'ai une erreur lorsque je modifie la fiche sur la init cbb via le bouton modifier dans le userform3
    Quel est le message d'erreur ? il faut le préciser dans la question !!!

    On ne peut pas ajouter d'item à un combobox lié à une source de données (i.e avec un RowSource) !

    Note, pour initialiser l'usf automatiquement a l'ouverture, c'est pas :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Private Sub UserForm3_Initialize()
      Init_CBB
    End Sub
    mais il faut écrire :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Private Sub UserForm_Initialize()
      Init_CBB
    End Sub
    Cordialement,
    Patrice
    Personne ne peut détenir tout le savoir, c'est pour ça qu'on le partage.

    Pour dire merci, cliquer sur et quand la discussion est finie, penser à cliquer sur

  5. #5
    Expert éminent
    Avatar de MarcelG
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juillet 2009
    Messages
    3 449
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 66
    Localisation : France, Maine et Loire (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Finance

    Informations forums :
    Inscription : Juillet 2009
    Messages : 3 449
    Points : 7 149
    Points
    7 149
    Billets dans le blog
    7
    Par défaut
    Bonjour à vous, Bonjour au Forum,

    Salut Patrice,

    Je pense que le processus le plus rigoureux est celui qui consiste à déclarer ses paramètres.
    Cette discipline, à mon avis, aura pour intérêt de rendre le code plus lisible, et, partant, plus compréhensible.
    Voir mon billet à ce sujet.
    Ce qui est valable pour une fonction personnalisée l'est d'autant pour toute méthode native de VBA.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Workbooks.Open Filename:"....
    D'autre part, il me paraît plus opportun de définir les items d'une Combobox avant de montrer le formulaire.
    Et ce, si possible, d'un bloc

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    With Usf_données
      .Cbx_lechoix.List = Range("T_Données[macolonne]").Value
      .Show
    End With
    S'il n'y a pas de condition, alors Il est inutile de balayer des lignes pour définir les items d'une zone de liste.

    C'est juste mon avis.

    Bien Cordialement.

    Marcel

    Dernier billet:
    Suppression des doublons d'un tableau structuré, gestion d'un array

    Pas de messagerie personnelle pour vos questions, s'il vous plaît. La réponse peut servir aux autres membres. Merci.


  6. #6
    Membre à l'essai
    Profil pro
    Inscrit en
    Juillet 2008
    Messages
    33
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2008
    Messages : 33
    Points : 12
    Points
    12
    Par défaut
    Merci à vous pour vos réponses! ,
    mais du coup je suis perdue, je dois mettre quoi pour que ça fonctionne ?
    encore merci pour votre aide !

  7. #7
    Expert éminent
    Avatar de MarcelG
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juillet 2009
    Messages
    3 449
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 66
    Localisation : France, Maine et Loire (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Finance

    Informations forums :
    Inscription : Juillet 2009
    Messages : 3 449
    Points : 7 149
    Points
    7 149
    Billets dans le blog
    7
    Par défaut
    Bonsoir,

    J'ai du mal à te suivre.

    Dans le formulaire, il n'y a pas de bouton "modifier le dossier" mais 2 pages dont l'une s'appelle ainsi.

    A ce stade de la discussion, j'ai ouvert ton classeur. Je n'ai pas rencontré d'erreur.
    Quel bouton activé provoque l'erreur?
    Quelle est cette erreur? Tu peux retourner une image de celle-ci.

    Qui plus est, ton formulaire est basé sur un tableau structuré.
    C'est un bon principe.
    Ainsi, tu peux alimenter ta zone de liste modifiable (Combobox) directement par une colonne de ce tableau comme je l'ai indiqué dans mon précédent post.
    Et ce que ce soit par la gestion d'un évènement Click d'un bouton de commande, ou bien à l'appel du formulaire comme je le montre.

    Ce n'est pas une critique personnelle mais un conseil.

    Il me paraît que tu t'es lancée dans un projet ambitieux alors que tu ne sembles pas connaître les bases de VBA.
    Dans ce billet, j'indique quelques espaces fondamentaux à consulter AVANT tout développement.

    Pour ce qui est des tableaux structurés, consulte ces 2 espaces.
    Présentation des tableaux structurés
    Les tableaux structurés par VBA

    Pour ce qui est de l'interférence Formulaire - Tableau structuré, consulte ces 2 espaces:
    Liaison 1 Formulaire - tableau structuré
    Liaison 2 Formulaire - tableau structuré

    En résumé, il te faut commencer par le commencement, à bien structurer un développement avec rigueur.
    Nous sommes, pour beaucoup, passés par ce stade. Moi le premier.
    Exemple: renommer ses contrôles de façon explicite en préfixant ce nom par un libellé qui en indique la nature (Txt, Cbx)
    Cbx_Dossier, Txt_adresse1
    En espérant t'avoir aidé.

    Bien Cordialement.

    Marcel

    Dernier billet:
    Suppression des doublons d'un tableau structuré, gestion d'un array

    Pas de messagerie personnelle pour vos questions, s'il vous plaît. La réponse peut servir aux autres membres. Merci.


  8. #8
    Membre à l'essai
    Profil pro
    Inscrit en
    Juillet 2008
    Messages
    33
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2008
    Messages : 33
    Points : 12
    Points
    12
    Par défaut
    quand je clique sur le bouton modifier, c'est là que j'ai l'erreur "erreur de compilation erreur de syntaxe" dans Sub Ini CBB.
    merci encore pour votre aide !
    Images attachées Images attachées   

  9. #9
    Expert confirmé Avatar de Patrice740
    Homme Profil pro
    Retraité
    Inscrit en
    Mars 2007
    Messages
    2 475
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 70
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Retraité
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Mars 2007
    Messages : 2 475
    Points : 5 630
    Points
    5 630
    Par défaut
    Citation Envoyé par grib1903 Voir le message
    e j'ai l'erreur "erreur de compilation erreur de syntaxe"
    Il y a une parenthèse ouvrante en trop devant .Cells (qui n'existe est pas sur le screen du post #1)

    Et pour revenir au post 1, comme je t'ai déjà dit, le problème vient du RowSource.
    Tu l'a défini directement dans les propriétés du combobox : il faut le supprimer (y compris avec la solution de Marcel)
    sinon VBA refusera la modification de la liste (c'est logique) :
    Nom : 2021-04-27 21_06_36-Greenshot.png
Affichages : 112
Taille : 19,7 Ko
    Cordialement,
    Patrice
    Personne ne peut détenir tout le savoir, c'est pour ça qu'on le partage.

    Pour dire merci, cliquer sur et quand la discussion est finie, penser à cliquer sur

  10. #10
    Membre à l'essai
    Profil pro
    Inscrit en
    Juillet 2008
    Messages
    33
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2008
    Messages : 33
    Points : 12
    Points
    12
    Par défaut
    bonjour,
    déjà, merci de votre patience !
    donc, je supprime le rowsource de la combobox1 et je mets quoi à la place de :
    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
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    Sub Init_CBB()
    Dim J As Long, Nbligne As Long
    Dim K As Long
     
     
     With Sheets("BASE DE DONNEES")
      Me.ComboBox1 = ""
        End With
      With Sheets("BASE DE DONNEES")
        ' Determine le nombre de cellules remplies en colonne A
        Nbligne = .Cells(Columns(1).Cells.Count, 1).End(xlUp).Row
        For J = 2 To Nbligne                  'Boucle sur les lignes partir de la 2ème (si pas de titre changer en 1)
          ComboBox1.AddItem (.Cells(J, 1).Value
        Next J
      End With
     
       With Sheets("BASE DE DONNEES")
      Me.ComboBox2 = ""
        End With
      With Sheets("BASE DE DONNEES")
        ' Determine le nombre de cellules remplies en colonne F
        Nbligne = .Cells(Columns(6).Cells.Count, 1).End(xlUp).Row
        For K = 2 To Nbligne                  'Boucle sur les lignes partir de la 2ème (si pas de titre changer en 1)
          ComboBox2.AddItem .Cells(K, 1).Value
        Next K
      End With
     
     
    End Sub
    merci d'avance pour votre aide !

  11. #11
    Expert confirmé Avatar de Patrice740
    Homme Profil pro
    Retraité
    Inscrit en
    Mars 2007
    Messages
    2 475
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 70
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Retraité
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Mars 2007
    Messages : 2 475
    Points : 5 630
    Points
    5 630
    Par défaut
    Citation Envoyé par grib1903 Voir le message
    bonjour,
    déjà, merci de votre patience !
    donc, je supprime le rowsource de la combobox1 et je mets quoi à la place de
    Rien !
    Cordialement,
    Patrice
    Personne ne peut détenir tout le savoir, c'est pour ça qu'on le partage.

    Pour dire merci, cliquer sur et quand la discussion est finie, penser à cliquer sur

Discussions similaires

  1. Erreur à l'importation d'une base de données avec PhpmyAdmin
    Par fuyo2004 dans le forum Installation
    Réponses: 1
    Dernier message: 22/06/2011, 03h43
  2. Réponses: 8
    Dernier message: 23/03/2005, 19h28
  3. Réponses: 7
    Dernier message: 05/01/2005, 13h43
  4. [C#] Modifier une base de donnée
    Par Macintoc dans le forum Accès aux données
    Réponses: 15
    Dernier message: 03/06/2004, 11h49
  5. Modifier le nom d'une base de donnée avec erreur sy
    Par mmn dans le forum MS SQL Server
    Réponses: 2
    Dernier message: 25/11/2003, 10h12

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