Calcul variable
Bonjour j'ai un petit soucis,
lorsque je fais un calcul en fonction de variable la cellule ne prend pas la valeur du calcul alors que le msgbox lui me donne la valeur du calcul... je ne comprend pas pourquoi ...
Bonjour,
Pas vu le moindre MsgBox nulle part !? Erreur quelque part ?
En cherchant trouvé ça entre autres :
Private Sub CommandButton1_Click()
Dim dlnd%
Dim dlncb%
Dim dlnespp%
Dim dlntrp%
Dim dlnchp%
Dim dlncbl%
Dim dlnespl%
Dim dlntrl%
Dim dlnchl%
Dim dlnnbl%
Dim dlnpm%
Dim dlnnbtr%
Dim dlncoef%
Dim dlncom%
Dim dlnsod%
Dim dlnmetro%
Dim dlnautre%, DlnTotalSurPlace%, DlnTotalLivraison
Dim i%
'déclaration de variable dernière ligne
dlnd = Sheets("feuil1").Range("A" & Rows.Count).End(xlUp).Row + 1
dlncb = Sheets("feuil1").Range("B" & Rows.Count).End(xlUp).Row + 1
dlnespp = Sheets("feuil1").Range("C" & Rows.Count).End(xlUp).Row + 1
dlntrp = Sheets("feuil1").Range("D" & Rows.Count).End(xlUp).Row + 1
dlnchp = Sheets("feuil1").Range("E" & Rows.Count).End(xlUp).Row + 1
dlncbl = Sheets("feuil1").Range("F" & Rows.Count).End(xlUp).Row + 1
dlnespl = Sheets("feuil1").Range("G" & Rows.Count).End(xlUp).Row + 1
dlntrl = Sheets("feuil1").Range("H" & Rows.Count).End(xlUp).Row + 1
dlnchl = Sheets("feuil1").Range("i" & Rows.Count).End(xlUp).Row + 1
dlnnbl = Sheets("feuil1").Range("Q" & Rows.Count).End(xlUp).Row + 1
dlnpm = Sheets("feuil1").Range("k" & Rows.Count).End(xlUp).Row + 1
dlnnbtr = Sheets("feuil1").Range("L" & Rows.Count).End(xlUp).Row + 1
dlnpm = Sheets("feuil1").Range("m" & Rows.Count).End(xlUp).Row + 1
dlncoef = Sheets("feuil1").Range("n" & Rows.Count).End(xlUp).Row + 1
dlncom = Sheets("feuil1").Range("o" & Rows.Count).End(xlUp).Row + 1
dlnsod = Sheets("feuil1").Range("p" & Rows.Count).End(xlUp).Row + 1
dlnmetro = Sheets("feuil1").Range("Q" & Rows.Count).End(xlUp).Row + 1
dlnautre = Sheets("feuil1").Range("r" & Rows.Count).End(xlUp).Row + 1
DlnTotalSurPlace = Sheets("feuil1").Range("t" & Rows.Count).End(xlUp).Row + 1
DlnTotalLivraison = Sheets("feuil1").Range("s" & Rows.Count).End(xlUp).Row + 1
'repport des valeurs du textbox
Sheets("feuil1").Cells(dlnd, "a") = Val(TextBox1)
Sheets("feuil1").Cells(dlncb, "b") = TextBox2
Sheets("feuil1").Cells(dlnespp, "c") = TextBox3
Sheets("feuil1").Cells(dlntrp, "d") = TextBox4
Sheets("feuil1").Cells(dlnchp, "e") = TextBox5
Sheets("feuil1").Cells(dlncbl, "f") = TextBox6
Sheets("feuil1").Cells(dlnespl, "g") = TextBox7
Sheets("feuil1").Cells(dlntrl, "h") = TextBox8
Sheets("feuil1").Cells(dlnchl, "i") = TextBox9
Sheets("feuil1").Cells(dlnnbl, "j") = TextBox10
Sheets("feuil1").Cells(dlnpm, "k") = TextBox11
Sheets("feuil1").Cells(dlnnbtr, "l") = TextBox12
Sheets("feuil1").Cells(dlncom, "m") = TextBox13
Sheets("feuil1").Cells(dlnsod, "n") = TextBox16
Sheets("feuil1").Cells(dlnmetro, "o") = TextBox17
Sheets("feuil1").Cells(dlnautre, "p") = TextBox18
End SubEt c'est même réitéré dans une autre proc. en module Standard !
Je cite pour me prouver par la suite que je n'aurais pas rêvé !
Si c'est une plaisanterie, un amusement en vaut bien un autre... si c'est un code sérieux (j'entends pour produire un vrai résultat), c'est plus inquiétant, faut espérer que c'est pas pour un travail réel...
Je n'hésite pas à renvoyer volontiers à une révision des bases ou des fondamentaux mais on est hors de tout cadre. Je n'ai jamais vu aucun débutant produire quelque chose du genre, et je n'imaginais même pas jusqu'ici que même quelqu'un qui se risquerait à écrire son tout premier code sans même avoir abordé les bases puisse penser à le faire, d'où ma question...
salut mferrand, non ce n'est pas une plaisanterie. je fais des essais sur des macro pour les assemblé plus tard...
à priori tu aurai des conseils à me donner je suis preneur et si tu peux m'orienter ce serait avec plaisir...
Certes, en ce qui concerne VBA, apprendre à utiliser toutes les instructions VBA de base, y compris boucles et tableaux, ainsi que maîtriser la syntaxe pour les principaux composants, parce que ça laisse pas mal à désirer de ce point de vue, mais tu n'es pas le seul dans ce cas, et bannir évidemment tout ce qui peut ressembler de près ou de loin à du code enregistré !
Mais la question que j'ai posée par rapport à la procédure citée n'est pas relative à un problème VBA, c'est une question de raisonnement intrinsèque en dehors de VBA ! Tu y détruis carrément la notion de tableau dans Excel !
Je suis d'avis de mettre ce machin sans délai à la poubelle !
Cordialement.
l objectif est de faire une petite application dans la quelle on fait un suivie d'action.
Pour cette exercice je place dans la derniere ligne les données de l'userform.
Tu n'as pas l'air de comprendre ce que je dis !
Avec ton code tu n'as plus de ligne, tu n'as qu'une collection de colonnes séparées, chacune ayant ses lignes, mais pas de lignes communes et donc pas de tableau, lequel implique des lignes et des colonnes.
Tu es un casseur de tableaux !!!
alors si je veux bien faire
1- je déclare un tableau dans lequel une ligne s'ajoute a chaque fois que je remplie le formulaire?
Je vais reprendre depuis le début si tu peux m'orienter pour avoir une procédure adéquate je suis preneur.
Tu n'as toujours pas compris en quoi ton raisonnement était déficient !
Tu fais un tableau pour rassembler des données relatives à des éléments, ces éléments peuvent être des personnes, des objets, des activités, etc.
Ton tableau va identifier chacun des éléments et en décrire les caractéristiques. Un élément ne se partage pas, c'est un tout, dans un fichier papier c'est une fiche, dans une base de données c'est un enregistrement, dans un tableau c'est une ligne !
Autrement dit une ligne de tableau constitue un élément identifié dont tu décris des caractéristiques élémentaires qui vont être incluses dans la ligne, mais qui vont représenter des éléments de description de diverses natures qui vont différencier chaque élément vis à vis des autres sur chacune des caractéristiques retenues pour les décrire.
Exemple, chaque élément à un Nom, mais chacun a un nom qui lui est propre, on va le retenir pour décrire les éléments recensés (le Nom constituera un Champ dans une base de données, une colonne dans un tableau). On peut avoir quantité d'autres caractéristiques que l'on recense : Prénom, Adresse, Prix, Couleur, etc. très variables selon la nature des éléments.
Quand on parle tableau, on est donc dans une démarche de recensement d'éléments ou chaque élément est représenté par une ligne, on consigne des caractéristiques de nature commune dans une même colonne pour tous les éléments, chacun ayant sur sa ligne la caractéristique qui lui est propre. Et pour renforcer l'aspect organique ainsi pris par un tableau on en réserve la première ligne à l'indication de la nature de la caractéristique figurant dans la colonne, ce sera une ligne d'en-tête. On s'efforce également que la première colonne soit réservée à une caractéristique identifiant de façon unique un élément (ce qu'on appelle une clé primaire dans une base de données).
Ce qu'il y a lieu de retenir c'est qu'un tableau ne rassemble pas de façon neutre des données disparates dans des cellules, il recense des éléments identifiables et constitués par les lignes du tableau, lignes dont les composants ne peuvent être dissociés.
Or, en définissant pas moins de 20 dernières lignes de ton tableau, ce que tu fais en fait c'est nier la ligne comme élément constitutif du tableau formant une unité. Si tu recherches la dernière ligne du tableau, tu n'en recherches qu'une et tu affirmes son existence en tant que ligne, quand tu en recherches 20, tu élimines l'existence d'une ligne de tableau, et au delà l'existence même du tableau qui perd sa qualité d'ensemble organique.
Il est certain que ton code est mal écrit, c'est tout à fait secondaire au cas particulier, aucune importance s'il comporte en plus des erreurs, il vaudrait mieux suffisamment d'erreurs pour le bloquer et l'empêcher de foutre le bazar dans les données, mais même le fait que ça va foutre le bazar demeure secondaire par rapport au vice conceptuel que tu introduis dans l'appréhension d'un tableau et qui en nie l'existence...
On n'est pas sur une discussion VBA là, on est sur l'évaluation de la signification de ce que tu fais vis à vis de tableaux de données organisées.