Bouton Modifier VBA Bloqué

Bonjour,

Je suis en train de créer un formulaire Userform afin de remplir une base de donnée automatiquement.

J'ai voulu rajouter un bouton "Modifier", le code n'affiche pas d'erreur, il marche sur les premières colonnes et après il ne modifie pas le reste.

Avez vous déjà rencontré ce type de problème, résolution ou test possible sur le code?

Merci d'avance

Bonsoir,

Le bouton lance la procédure que tu lui as affectée, laquelle exécute ce que tu as programmé !

Vérifie ton programme si ça ne se passe pas comme tu le pensais.

bonsoir,

Normalement un formulaire Ajout/Recherche n'a pas besoin de bouton modifier : un bouton Ok suffit.

Si on part de rien Ok est en mode Ajout

Si on part d'une recherche Ok est en mode modification (si la recherche à abouti...)

A+

galopin01 a écrit :

bonsoir,

Normalement un formulaire Ajout/Recherche n'a pas besoin de bouton modifier : un bouton Ok suffit.

Si on part de rien Ok est en mode Ajout

Si on part d'une recherche Ok est en mode modification (si la recherche à abouti...)

A+

Bonsoir,

En fait, le formulaire permet de remplir un fichier de vente en s'ajoutant à la 1ere ligne vide.

J'ai besoin du bouton modifier pour modifier des clients existants (changement d'adresse, de commande par exemple).

Je vous joint mon code, c'est peut etre gros comme une maison maison je vois plus

Private Sub CommandModif_Click()

Dim nom, nodos, i As Integer

Sheets("Clients").Select

If Combonom.Value = "" And Combonodos.Value = "" Then MsgBox ("Merci de selectionner un client ou un numéro de dossier.")

If MsgBox("Voulez-vous modifier la fiche?", vbYesNoCancel, "Confirmation") = vbYes Then

nom = Me.Combonom.ListIndex + 2

nodos = Me.Combonodos.ListIndex + 2

For i = nom To nodos

Next i

Cells(i, 2) = TextDate.Value

Cells(i, 4) = ComboConseiller.Value

Cells(i, 5) = TextNom.Value

Cells(i, 6) = Textprenom.Value

Cells(i, 7) = TextAdd.Value

Cells(i, 8) = TextCP.Value

Cells(i, 10) = TextFixe.Value

Cells(i, 11) = TextPort.Value

Cells(i, 12) = Textmail.Value

Cells(i, 13) = Text200L.Value

Cells(i, 14) = Text300L.Value

Cells(i, 15) = Textclim91.Value

Cells(i, 16) = TextClim92.Value

Cells(i, 17) = TextClim12.Value

Cells(i, 18) = TextClim18.Value

Cells(i, 19) = TextClim24.Value

Cells(i, 37) = ComboStatut.Value

If OptionEconhome = True Then Cells(i, 20) = "X"

If OptionDalle = True Then Cells(i, 23) = "Dalle"

If OptionToiture = True Then Cells(i, 23) = "Toiture"

End If

Unload Me

UserForm1.Show

End Sub

Après j'ai aussi créé un bouton pour accéder à la Userform via un module. Il me l'affiche sans problème mais quand je rempli ca ne rempli pas le tableau excel alors qu'en mode test VBA création ça marche!!!

C'est mon 1er formulaire et je galère un peu alors merci pour votre aide et patience!

Camille

bonjour,

Tout seul le code ne sert à rien, il faut le classeur et le formulaire KIVABIEN...

Juste une ligne d'enregistrement bidon suffira.

A+

Bonsoir,

Je crois que tu n'as bien compris les propos de Galopin !

Réfléchis 2 minutes... Lorsque tu mets à jour un élément de ta base, les données à jour sont dans ton formulaire, quand tu valides la mise à jour, tu lances une procédure qui va affecter cet élément, soit une ligne de la base en servant chaque champ avec les données validées du formulaire.

Que la ligne soit nouvelle ou qu'elle ait déjà été modifiée des dizaines de fois ne change rien, c'est la même chose qui est à faire.

La seule différence est que lorsque tu modifies tu disposes dès le départ de la ligne affectée, lorsque tu ajoutes tu dois la calculer. En fait l'ajout est aussi une modification, tu modifies un élément vide en lui affectant un contenu.

Et selon le dispositif, le calcul de l'emplacement du nouvel élément pouvant être fait dès le lancement du formulaire, tu te trouves lors de la validation exactement dans la même situation.

Et si il n'a pas été fait cela ne change pas grand chose, juste une instruction conditionnelle : si j'ai la ligne j'affecte, si je n'ai pas je la trouve et j'affecte... !

Cordialement.

Oh ! Mais t'es rapide galopin ! Il est vrai que je regarde la télé en même temps... Bonne soirée.

OK Merci!

Par quel biais puis je vous envoyer le fichier. Le format ne passe pas par le forum

Bonsoir,

C'est surtout le USF qui nous intéresse :

Il faut réduire c'est pas la base de donnée qui nous intéresse : 3 lignes suffisent pour tester le fonctionnement...

A+

galopin01 a écrit :

Bonsoir,

C'est surtout le USF qui nous intéresse :

Il faut réduire c'est pas la base de donnée qui nous intéresse : 3 lignes suffisent pour tester le fonctionnement...

A+

Oui c'est ce que j'ai fait mais apparemment c'est le format avec prise en charge ds macro qui ne passe pas.

Salut

dit moi pour quoi

il y rien dans cette boucle

If MsgBox("Voulez-vous modifier la fiche?", vbYesNoCancel, "Confirmation") = vbYes Then
nom = Me.Combonom.ListIndex + 2
nodos = Me.Combonodos.ListIndex + 2
'###########################"
For i = nom To nodos
Next i
'###########################"
Cells(i, 2) = TextDate.Value

Pour la gestion des erreurs

Si vous n quitter pas la procédure vous aller la forcer a choisir "Me.Combonom.ListIndex + 2" comme une entre a modifier

si vous vn avez rien selectionner Me.Combonom.ListIndex + 2 reste toujours egal a 1

ton code :

If Combonom.Value = "" And Combonodos.Value = "" Then MsgBox ("Merci de selectionner un client ou un numéro de dossier.")

Amelioration :

If Combonom.Value = "" And Combonodos.Value = "" Then
MsgBox ("Merci de selectionner un client ou un numéro de dossier.")
Exit Sub
End If

oubien pour la gestion des ereurs :

If Combonom.ListIndex = -1 Or Combonodos.ListIndex = -1 Then 'pour selectionner
MsgBox ("Merci de selectionner un client ou un numéro de dossier.")
Exit Sub
ElseIf Combonom.Value = "" And Combonodos.Value = "" Then 'pour entre une valuer non vide
MsgBox ("Merci de selectionner un client ou un numéro de dossier.")
Exit Sub
End If
AMIR a écrit :

Salut

dit moi pour quoi

il y rien dans cette boucle

If MsgBox("Voulez-vous modifier la fiche?", vbYesNoCancel, "Confirmation") = vbYes Then
nom = Me.Combonom.ListIndex + 2
nodos = Me.Combonodos.ListIndex + 2
'###########################"
For i = nom To nodos
Next i
'###########################"
Cells(i, 2) = TextDate.Value

Pour la gestion des erreurs

Si vous n quitter pas la procédure vous aller la forcer a choisir "Me.Combonom.ListIndex + 2" comme une entre a modifier

si vous vn avez rien selectionner Me.Combonom.ListIndex + 2 reste toujours egal a 1

ton code :

If Combonom.Value = "" And Combonodos.Value = "" Then MsgBox ("Merci de selectionner un client ou un numéro de dossier.")

Amelioration :

If Combonom.Value = "" And Combonodos.Value = "" Then
MsgBox ("Merci de selectionner un client ou un numéro de dossier.")
Exit Sub
End If

Bonjour Amir,

Merci de ta réponse.

Je pensais qu'en écrivant cela ca me permettrait d'utiliser "i" qui correspond à mes deux moyens de rechercher ma fiche client et de la modifier.

Ce que je ne comprends vraiment pas c'est qu ça marche pour les premières lignes mais pas pour le reste.

D'autre part, j'ai créé un bouton pour accéder au formulaire... seulement il me renvoie bien au formulaire mais le formulaire ne marche plus. Pas de message d'erreur mais il ne me rempli plus mon fichier.

Merci.

Bonsoir

Je croix j ai vous signale quelques erreurs qui vont aide à résoudre votre problème

Rechercher des sujets similaires à "bouton modifier vba bloque"