Erreur pour modifier base de données via Userform2

Bonsoir,

sur le Userform2, j'ai 2 problèmes :

le 1er :

j'ai une erreur d'exécution quand je clique sur le bouton modifier.

ce bouton (CommandButton2) doit permettre de modifier un élément quelconque de la base de données..

le 2ème:

sur la combobox2, je n'arrive pas à sélectionner le nom, je suis sur N° de dossier, pourquoi ?

Merci d'avance pour vos explications, et surtout, ne m'en veuillez pas pour mon ignorance...

je joins le fichier modifié pour l'exemple et surtout la compréhension

Bonjour,

D'une part, la recherche du dossier s'effectuait dans la colonne F "Nom".

D'autre part, vous utilisez la même variable "i" dans 2 macros dont l'une appelle l'autre au beau milieu d'une boucle avec "i", j'explique:

La première macro commence une boucle avec i = 1 à 24, dans cette boucle, on va chercher une autre macro qui lance à son tour une boucle avec i = 1 à 24, quand elle sort de sa boucle i=24, puis elle repasse la main à la première macro, qui à son tour passe incrémente l'indice "i" de 1 soit i =25 et, va chercher la textbox indicée 25, or cette dernière n'existe pas d'où l'erreur.

Il suffit donc de donner un autre nom de variable différent pour chaque macro.

Votre fichier corrigé.

Cdlt

Bonjour,

déjà, merci pour votre réponse.

par-contre même avec le fichier modifié,

1 il ne valide pas la modification dans "BASE DE DONNEES"

et 2 - il n'y a toujours pas la possibilité de choisir en fonction du nom (dont la source est colonne F)

comment je peux corriger cela ?

A vrai dire je me suis contenté de regarder quelques anomalies mais je n'ai pas pensé à regarder ce que faisait le bouton "Modifier".

Je constate que la combobox2 au lieu de présenter la liste des Noms présente la liste des dossiers à la place, donc pour les modifications de la BDD ça ne risque pas de marcher. commencez par corriger ce point.

alors, j'ai modifié en fonction de ce que j'ai compris, mais ça ne marche pas.

Bonjour toutes et tous

coucou Arturo83 et merci

@Bugg @tester si j'ai compris

1/allez sur la feuille du classeur BASE DE DONNEES, sélectionner la plage de la colonne F de F2 à F5

2/ puis, dans la zone Nom, taper NOM, à valider par CTRL+ Maj + Entrée

3/ dans le code VBE sur l'usf2, voir la combobox2 sa Propriété sur la gauche rechercher RowSource et y inscrire NOM

4/ sauvegarder et tester

ci-joint, au cas où

ztest001

Note: idem pour la combobox2 qui quant à lui porte le nom NOM dans sa propriété voir RowSource

crdlt,

André

J'avais testé cette solution, mais ça sélectionne uniquement le nom, sans remplir la fiche....

Je suis parti comme Andre13 (salut) pour affecter le liste "Nom" à la textbox2 sauf que je m'aperçois qu'il y a déjà une zone de texte avec "Nom" donc la combobox2 ne peux pas être le nom mais plutôt l'IDJ. J'ai la vague impression que ce code n'est pas abouti et qu'il faut le repenser.

Re,

-une petite erreur sur Ln du Combobox 2 (Ln, donc variable Ln2)

- flag1 rajouté( @tester, bon là c'est du bidouillage)

-les 2 combos fonctionnelles de mon côté

-btn fermer (ok)

-remplacements des noms fictifs, date etc du tableau de la feuille afin d'avoir une meilleur visibilité lors des changements des combos de l'usf

je rejoins Arturo83

bon retest ci-dessous ci-joint

crdlt,

André

merci encore pour votre aide !

alors maintenant ça s'affiche correctement, par contre quand je clique sur modifier, avec le choix "nom", je n'ai pas d'erreur mais ça ne modifie rien dans la base de données et quand je choisis le dossier, si je clique sur modifier , j'ai une erreur d'exécution

erreur cmd2

Bonjour toutes et tous

je remonte ce sujet, désolé Bugg après plusieurs tentatives, je n'ai rien trouvé de concluant à ce niveau, il y a beaucoup de truc qui m'échappe

...

crdlt,

André

Bonjour tout le monde,

il y a déjà un truc qui m'a fait mal aux yeux d'entrée de jeu , c'est ceci ; dans le code je lis :

For i = 1 To 24
            .Cells(Ln, i) = Controls("TextBox" & i).Value

En principe on devrait trouver dans les 24 TextBox les 13, 14, 21, 22 et 23. Je les ai cherchées, mais j'ai l'impression qu'ils manquent à l'appel.

Pour le 2e point : sélectionner la colonne F de la base de données, la nommer "Noms" (Formules|Gestionnaire de noms) et mettre "Noms" dans la propriété RowSource de la Combo à la place de T_Data.

j'ai modifier le userform, c'est maintenant le 3, mais il ne modifie toujours rien, pourquoi ?

Bonjour toutes et tous

@corriger: la combobox1 de l'usf3 dans sa propriété, il n'y a rien dans la RowSource qui est normalement T_Data

cela ne risque pas de fonctionner

z80aa

idem pour la combobox2 de l'usf3 qui dans sa propriété la RowSource est NOM

note: pourquoi autant d'usf ?

crdlt,

André

merci pour votre patience !

les rowsource sont ajoutées, mais la base de données ne se modifie toujours pas quand on change le nom par exemple.

Pour ce qui est des autres USF (les 1 et 2)

c'était des essais...

et question :

pourquoi sur ce sujet : http://forum.excel-pratique.com/excel/modifier-les-donnees-d-une-feuille-via-userform-t36510.html

il n'y a pas de rowsource, et que la combobox fonctionne...

merci d'avance pour vos explications et votre patience...

le fichier correspondant :

Bonjour toutes et tous

@Bugg coucou, je vais essayer de t'expliquer au mieux

si on reprend l'exemple du classeur de Banzai64 (merci à lui), on remarque que lorsque l'userform se lance grâce à l'initialisation de l'userform qui fait appel à Init_CBB, du coup la sub sub Init_CBB va se lancé , on déclare les 2 variables J et NbLigne la combobox1 est nettoyé( clear), la même sub va voir directement la feuille Vol du classeur, et (voir les commentaires ci-dessous) donc, cela prend bien la première colonne de la feuille Vol c'est-à dire la colonne A en deuxième ligne (J)

Private Sub UserForm_Initialize()
  Init_CBB
End Sub

Sub Init_CBB()
Dim J As Long, Nbligne As Long

  Me.ComboBox1.Clear
  With Sheets("Vol")
    ' 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

End Sub

crdlt,

André

déjà, merci beaucoup pour votre patience et vos explications !

j'ai encore une erreur , quand je modifie la fiche j'ai une erreur dans init cbb

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

je joins le fichier du userform3 pour que ce soit un peu plus plus clair...

merci d'avance

Bonjour toutes et tous

oupss! désolé du retard

et en plaçant uniquement comme ceci sur le 1er With : (exemple si combobox1 présente sur la feuille)

With Sheets("BASE DE DONNEES")
 ComboBox1.Value = ""
End With

EDIT: exemple ci-dessus d'une combobox1 de la feuille nommée 'Base de données" du classeur


(exemple si combobox1 non présente sur la feuille mais avec l'userform)

il faut le chemin de la combobox c-à-dire le nom de l'userform, peut-être que vous désirez lorsque la feuille du classeur BASE DE DONNEES est activé réinitialiser la combobox1 de l'userform ce qui donnerai

With Sheets("BASE DE DONNEES")
' à tester pas certain
 Userform1.ComboBox1.Clear
End With

EDIT: exemple ci-dessus de la feuille 'Base de données" du classeur, on vide la combobox1 de l'userform

après, peut-être lorsque l'événement de la feuille BASE DE DONNEES est activé réinitialisé la combobox1 mais sans certitude de votre suite de procédure

crdlt,

André

Rechercher des sujets similaires à "erreur modifier base donnees via userform2"