VBA_Userform Code 1004, sur enregistrement de nouveau contac

Bonsoir à toutes et tous,

Je préfère prévenir je suis un pur newbie du VBA : )

Alors mon problème est le suivant , il y a trois jours on m'a demandé de faire un formulaire de saisie sous vba pour rentrer des données dans un fichier Excel, j'ai bricolé un truc qui fonctionne un peu (en gros un peu très peu) mais j'étais confiant seulement j'ai un code 1004 qui est apparu en fin de journée sur une ligne de code qui fonctionnait très bien ce matin.

En effet dans mon formulaire il y a un système d'ajouts de contacts qui enregistre le tout dès qu'on appuie sur le bouton, or ça à l'air d'être à cette endroit que ça bug.

If Colonne > 0 Then Sheets ("BASE_VBA").Cells (derligne,Colonne)=ctrl

Vu que c'est le seul truc qui fonctionner sur mon formulaire x D (pas réussi à fair eun menu deroulant qui met à jour mon formulaire, un bouton modifier qui fonctionne pas) j'aimera bien une assistance

Option Explicit
Dim Ws As Worksheet
'Pour le formulaire
Private Sub UserForm1_Initialize()
Dim J As Long
Dim I As Integer
Set Ws = Sheets("BASE_VBA") 'Correspond au nom de votre onglet dans le fichier Excel
With Me.ComboBox1
For J = 2 To Ws.Range("A" & Rows.Count).End(xlUp).Row
.AddItem Ws.Range("A" & J)
Next J
End With
For I = 1 To 290
Me.Controls("TextBox" & I).Visible = True
Next I
End Sub

'Pour le bouton Nouveau contact
Private Sub CommandButton1_Click()
Dim ctrl As Control
Dim Colonne As Integer
Dim derligne As Integer
If MsgBox("Confirmez-vous l’insertion de ce nouveau poste ?", vbYesNo, "Demande deconfirmation d’ajout") = vbYes Then
derligne = Sheets("BASE_VBA").Range("A65000").End(xlUp).Row + 1 'Pour placer le nouvel enregistrement à la première ligne de tableau non vide
For Each ctrl In UserForm1.Controls
Colonne = Val(ctrl.Tag)
If Colonne > 0 Then Sheets("BASE_VBA").Cells(derligne, Colonne) = ctrl
Next
End If
End Sub
'Pour le bouton Quitter
Private Sub CommandButton3_Click()
    Unload Me
End Sub
Private Sub UserForm_Initialize()

ComboBox2.AddItem "Bon"
ComboBox2.AddItem "Moyen"
ComboBox2.AddItem "Mauvais"

End Sub

Bref merci d'avance.

Bonjour,

 ...
For I = 1 To 290
Me.Controls("TextBox" & I).Visible = True
Next I
...

Sérieux, tu as 290 textbox ???

Peux-tu nous soumettre une copie sans données confidentielles ?

Gelinotte

non pas autant, mais j'étais en mode désespéré alors j'ai bouiné ah ah : D

je me suis paumé dans tutoriels avec des codes et expressions différentes ^^.

Du coup je pense repartir avec une base clean.

Dans tous les cas merci beaucoup d'avance

6case-2.xlsm (88.97 Ko)

Bonjour,

Private Sub UserForm1_Initialize() ... Ça n'existe pas dans ton projet.

Seul : Private Sub UserForm_Initialize() existe.

Donc, combine le contenu des deux dans Private Sub UserForm_Initialize()

Puis, mets en commentaire ou supprime :

For I = 1 To 290
Me.Controls("TextBox" & I).Visible = True
Next I

En fait, tu en as 190 et, à moins que tu leur aies donné la propriété caché (hidden), ce bout de code semble inutile.

Mets quelques données bidons dans la feuille BASE_VBA pour tes tests.

Je te laisse avancer dans ton projet.

Gelinotte

Merci de votre réponse j'ai modifié mon userform en conséquence:

Option Explicit
Dim Ws As Worksheet
'Pour le formulaire
Private Sub UserForm_Initialize()
ComboBox2.AddItem "Bon"
ComboBox2.AddItem "Moyen"
ComboBox2.AddItem "Mauvais"
Dim J As Long
Dim I As Integer
Set Ws = Sheets("BASE_VBA") 'Correspond au nom de votre onglet dans le fichier Excel
With Me.ComboBox1
For J = 2 To Ws.Range("A" & Rows.Count).End(xlUp).Row
.AddItem Ws.Range("A" & J)
Next J
End With
End Sub

'Pour le bouton Nouveau contact
Private Sub CommandButton1_Click()
Dim ctrl As Control
Dim Colonne As Integer
Dim derligne As Integer
If MsgBox("Confirmez-vous l’insertion de ce nouveau poste ?", vbYesNo, "Demande deconfirmation d’ajout") = vbYes Then
derligne = Sheets("BASE_VBA").Range("A65000").End(xlUp).Row + 1 'Pour placer le nouvel enregistrement à la première ligne de tableau non vide
For Each ctrl In UserForm1.Controls
Colonne = Val(ctrl.Tag)
If Colonne > 0 Then Sheets("BASE_VBA").Cells(derligne, Colonne) = ctrl
Next
End If
End Sub
'Pour le bouton Quitter
Private Sub CommandButton3_Click()
    Unload Me
End Sub

Seulement j'ai toujours le même problème, c'est à dire un message d'erreur 1004 lorsque j'essaye d'ajouter un nouveau poste via le formulaire.

Toujours la partie:

Sheets ("BASE_VBA").Cells(derligne, Colonnes) = ctrl

qui est en .défaut.

Encore merci

Bonjour,

Dim derligne As Integer

integer ne va que jusqu'à 32767, un peu juste pour un n° de ligne.

Contrôle les valeurs de derligne, Colonne lorsque ça plante.

Est-ce que ton ctrl existe et est accessible à ce moment ?

Et ça ne mange pas de pain de préciser la propriété, des fois il y a des soucis avec celle par défaut :

If Colonne > 0 Then Sheets("BASE_VBA").Cells(derligne, Colonne).value = ctrl.value (ou .text ou...)

Et surtout fuit les fusions de cellule le plus souvent inutiles et qui mettent le bazar.

eric

Bonjour,

Je ne t'ai pas abandonné, je cherchais les erreurs. J'en ai trouvé 2 dans le Userform.

1- je ne comprenais pas pourquoi Ctrl.Tag 274 plantait.

Le Frame123 (page Armoire Electique_2) avait encore le Tag activé.

2- page Armoire Electique_1 : sous le frame Fonctionnement, il y avait vis-à-vis les frames 116, 118 et 119 (OptionButtons des Pompes) d'autres frames et d'autres Optionbuttons que j'ai osé supprimer.

Dans la feuille "BASE_VBA", ligne 31, j'ai fait écrire le nom du control et à la ligne 32, le numéro du control. Ceci afin de comprendre et dépanner les deux erreurs citées plus haut.

Ces deux lignes pourraient te servir pour vérifier les concordances entre les Ctrl et les colonnes de la feuille "BASE_VBA".

Merci à eriiic pour le rappel (integer); j'ai mis des Long.

Test le fichier joint ... perso, je n'ai pas fait de tests complets sur les 280 control, je te laisse ce plaisir

Gelinotte

je vous remercie de l'aide : ), j'essaie de découvrir les possibilités de ce code mais bon 3 jours c'est court ^^ ah ah.

Dans tous les cas je regarde ça cette nuit et je marquerai en résolu le sujet si je n'ai as d'autre problèmes.

Encore merci

Rechercher des sujets similaires à "vba userform code 1004 enregistrement nouveau contac"