Problème pour nommer les cellules

Bonjour

Je souhaite réaliser un userform pour enregistrer des commandes.

Tout d'abord j'aurais voulu que les Label que mes dans mon userform se remplisse avec les références de mon tableau mais ce que j'ai fait ne fonctionne pas.

Puis je voulais que les informations rempli dans mon userform viennent s'incrémenter dans mon tableau mais ca ne fonctionne pas non plus.

Pourriez vous me dire ou j'ai fait une erreur dans mon code?

Merci d'avance

Bonsoir,

Il serait bon d'apprendre à coder en respecter quelques règles de base : déclarations en tête, indentation du code, éviter de délayer en sautant des lignes à tout bout de champ... On lira mieux et on saura ce qu'on lit !

Label14 n'existe pas dans ton Userform, invoquer des objets inexistants dans le code est à éviter, cela ne peut qu'engendrer des erreurs.

Quand tu mets un nombre entre guillemets, ce n'est plus une valeur numérique, tu forces son utilisation en valeur texte. Ce qu'on a d'ailleurs rarement besoin de faire, y compris pour obtenir du texte...

Il semble visiblement que tu aies zappé l'adressage des cellules dans ton apprentissage d'Excel. Il faut faut absolument y revenir car on n'avancera pas si tu n'en maîtrises pas les rudiments.

Ensuite il conviendra de te poser la poser de savoir exactement ce que tu veux obtenir pas à pas, avant de passer à comment le faire, également pas à pas...

Cordialement.

Désolé je suis toute nouvelle et j'ai appris quelques petite chose en lisant les cours du site.

J'ai refait complètement mon tableau en essayant de faire mieux.

Pour ce qui est de l'adressage des cellules je ne comprend pas bien la remarque je nome mes cellules range("B4") par exemple ou est l'erreur!!!!

Dans mon nouveaux fichier j'ai toujours une erreur sur la ligne

Range("B" & ligne) = txtnom

Je n'arrive pas à corriger.

Pouvez vous m'aider.

Je voudrais également que mes labels se remplisse avec les informations d'entête de mon tableau pour cela j'ai mis un code dans l'userform_click mais ce n'ai pas l'idéal car il ne s'affiche que lorsque je click sur l'userform. N'y aurait t'il pas un autre moyen?

Merci d'avance

Bonjour,

Pas le temps de tout expliquer, mais on avance un peu (voir fichier).

Conseils (illustrés ci-dessous) :

  • Indenter le code !!!
  • Laisser VBA placer les procédures dans un module de Userform (on s'y retrouvera toujours mieux et plus vite !)
  • Qualifier ses expressions : éviter de travailler en référence implicite à l'élément actif mais se référer explicitement à l'objet parent (le code sera plus précis, et l'exécution plus rapide).
  • Utiliser des blocs With chaque fois que possible (cela raccourcira le code, et le rendra aussi plus rapide à l'exécution).
  • Eviter les longues énumérations interminables : faire des boucles !
Sub Videuf()
    Dim i%
    txtnom.Value = "": txtprenom.Value = ""
    For i = 4 To 29
        Controls("qt" & i).Value = ""
    Next i
    total.Caption = ""
End Sub

Private Sub confirm_click()
    Videuf
End Sub

Private Sub ENREGISTRER_Click()
    Dim lgn(2 To 29), ligne&, i%
    lgn(2) = txtnom.Value: lgn(3) = txtprenom.Value
    For i = 4 To 29
        lgn(i) = Controls("qt" & i).Value
    Next i
    With Worksheets("Feuil1").Range("B2").End(xlDown)(2)
        .Resize(, 28).Value = lgn
        total.Caption = .Cells(1, 29).Text
    End With
End Sub

Private Sub UserForm_Initialize()
    Dim i%
    With ActiveSheet
        For i = 4 To 29
            Controls("lbl" & i).Caption = .Cells(3, i)
        Next i
    End With
End Sub

Modifications apportées :

  • Renommé TextBox oubliés qui ne l'avaient pas été ( ) et supprimé ceux en trop !
  • Revu ordre de tabulation pour que l'on passe normalement de chacun au suivant à l'utilisation.
  • Complété omission (total non effacé).
  • Rempli cellule B2 (éviter End(xlDown) à partir d'une seule cellule remplie !)
  • Revu formule en AD :
=SOMMEPROD(D4:AC4;$D$2:$AC$2)

Pas encore tout à fait TOP mais il y a déjà des progrès.

La façon de faire comporte des lacunes que tu verras certainement à l'usage... à toi de compléter et affiner la méthode (exemple : pas d'annulation de prévue...)

Très bien de renommer ses contrôles : mais il faut encore améliorer la chose (notamment pour faciliter l'utilisation de boucles).

La disposition n'est pas la plus ergonomique qui soit, elle peut facilement être améliorée, et certains choix ne sont pas les meilleurs (le total aurait été mieux affiché dans une TextBox verrouillée pour ne pas pouvoir donner lieu à saisie...)

Cordialement.

Merci beaucoup pour le temps que tu as passer sur mon projet.

Ca marche super bien.

Je vais prendre le temps de comprendre tout ce que tu as réalisé.

Merci encore.

Bonne journée

Rechercher des sujets similaires à "probleme nommer"