Transferer la valeur d'un textbox

Fermé
abdellah_tadjine Messages postés 191 Date d'inscription jeudi 30 novembre 2006 Statut Membre Dernière intervention 5 janvier 2022 - 11 avril 2020 à 23:09
abdellah_tadjine Messages postés 191 Date d'inscription jeudi 30 novembre 2006 Statut Membre Dernière intervention 5 janvier 2022 - 12 avril 2020 à 21:33
Bonjour,
dans mon userform j'ai plusieurs textbox et combobox, et le transfert des valeurs vers les cellules se fait par le code suivant:

Private Sub CommandButton1_Click()
Dim derligne As Integer

If MsgBox("Confirmez-vous l'Ajout des Données?", vbYesNo, "confirmation") = vbYes Then

derligne = Sheets("CE1.1").Range("A254256").End(xlUp).Row + 1

Cells(derligne, 1) = num_inscr.Value
Cells(derligne, 2) = nompren_eleve.Value
Cells(derligne, 3) = sexe.Value
Cells(derligne, 4) = classe.Value
Cells(derligne, 5) = transp.Value
Cells(derligne, 6) = numvehic.Value
Cells(derligne, 7) = DTPicker1.Value


End If
ThisWorkbook.Save

End Sub

grace au commandbutton(enregistrer), tout fonctionne très bien avec (derligne=sheets("ce1.1")

mais une fois que je change le feuil ("ce1.2"), au lieu qu'il ajoute des donnée il les écrases, comme si End(xlUP.ROW+1 ne fonctionne pas.

merci.

Configuration: Windows / Firefox 74.0
A voir également:

2 réponses

jordane45 Messages postés 38470 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 27 avril 2025 4 741
Modifié le 11 avril 2020 à 23:54
Dis voir... va falloir qu'on te le répète combien de fois ??

Lorsque tu postes du code sur le forum, merci de bien vouloir utiliser LES BALISES DE CODE

explications disponibles ici : https://codes-sources.commentcamarche.net/faq/11288-les-balises-de-code.

Ensuite... regardes bien ton code et essaies de réfléchir un peu :
Ta variable est trouvée comme ceci
derligne = Sheets("CE1.1").Range("A254256").End(xlUp).Row + 1 

Et tu nous dis :

une fois que je change le feuil ("ce1.2")

Ne vois tu pas le pb ??


0
abdellah_tadjine Messages postés 191 Date d'inscription jeudi 30 novembre 2006 Statut Membre Dernière intervention 5 janvier 2022 6
12 avril 2020 à 01:46
1)..Oui j'ai bien compris, et j'ai bien utilisé les balise. Mais apparament j'ai du mal a les utiliser.
2)..si j'avais la solution je ne perd pas mon temps a chercher sur le forumccm.
3)...si vous ne voulez pas m'aider et bien .....vous etes libre. Merci
0
jordane45 Messages postés 38470 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 27 avril 2025 4 741 > abdellah_tadjine Messages postés 191 Date d'inscription jeudi 30 novembre 2006 Statut Membre Dernière intervention 5 janvier 2022
12 avril 2020 à 02:00
Je veux bien t'aider mais je ne vais pas faire le travail à ta place surtout pour quelque chose qui semble aussi simple.
Tu cherches la dernière ligne sur la feuille CE1
1
Lorsque tu changes de feuilles tu cherches toujours au même endroit.... je suppose donc que ton souci vient de là.

Ps... il faut lire le lien que je t'ai donné pour les balises de code entièrement...ça devrait t'aider à comprendre comment les utiliser.
pense aussi lorsque tu rédige un message que tu peux utiliser le bouton previsualiser histoire de voir si ça bien fonctionné...
0
abdellah_tadjine Messages postés 191 Date d'inscription jeudi 30 novembre 2006 Statut Membre Dernière intervention 5 janvier 2022 6 > jordane45 Messages postés 38470 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 27 avril 2025
12 avril 2020 à 02:09
Lol...toujours pas de solution de votre part....bien que j'ai pu réaliser bcp de chose grâce a votre contribution chose que je ne peut pas le nié.
Pour ton deuxième conseil je vais utiliser l'option de visualiser. Cordialement abdallah
0
jordane45 Messages postés 38470 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 27 avril 2025 4 741 > abdellah_tadjine Messages postés 191 Date d'inscription jeudi 30 novembre 2006 Statut Membre Dernière intervention 5 janvier 2022
12 avril 2020 à 10:28
As tu compris ce que j'ai indiqué concernant ton souci ? As tu essayé d'y remédier ?
Si oui,.. qu'as tu fais ?
Qu'est-ce que ça donne ?
En quoi cela ne permet pas de résoudre ton souci ?

ôtes moi d'un doute...Tu n'espères pas qu'on écrive le code à ta place quand même ?
Ici, on essai d'aider les gens à résoudre leurs soucis... on les aide à réfléchir et à trouver la solution.... à conditions que tu fasses un minimum d'effort...
A te lire.. j'ai l'impression que tu n'es pas dans cette démarche... j'espère me tromper !
0
Patrice33740 Messages postés 8561 Date d'inscription dimanche 13 juin 2010 Statut Membre Dernière intervention 15 mars 2025 1 779
Modifié le 12 avril 2020 à 09:36
Bonjour,

Contrairement à ce que tu affirmes, ton code ne fonctionne « pas très bien », mais plutôt tant bien que mal !
Il bénéficie de la très grande souplesse du VBA qui est la cause de ton problème. Il y a d'autres problèmes sous-jacents.

Ta demande en est une preuve flagrante.

La programmation exige beaucoup de rigueur pour coder correctement, voici quelques conseils qui t'éviterons bien des déboires :

1• commences tous les modules par Option Explicit, cela oblige à déclarer toutes les variables ;
2• déclares les variables avec le type ad hoc et fais attention à préciser le type après chaque nom de variable ;
3• limites leur portée au strict nécessaire (i.e. locale, privée, publique ou globale), afin qu'elles n'existent que là où elles sont utiles ;
4• envisages tous les types potentiels de chaque variable pour éviter les erreurs. En particulier lors des affectations, assures-toi que le récepteur est de même type que la source sinon utilises une fonction de conversion,
--- par exemple, au lieu de
Worksheets(1).Cells(1,2).Value = textboxDate.value
,
écrire
Worksheets(1).Cells(1,2).Value = CDate(textboxDate.value)
;
5• dans le doute prévois un gestionnaire d'erreur ;
6• n'utilises jamais .Select, évites d'utiliser les objets actifs : Selection, Activecell, Activesheet, ... (sauf, très très rarement, lorsque c'est absolument indispensable) ;
7• évites les références implicites(i.e. partielles), privilégies les références explicites (i.e. suffisamment complètes),
--- par exemple, au lieu de
= Cells(1,2)
écrire
= Worksheets(1).Cells(1,2).Value
,
donc, précises toujours la feuille pour un objet Range (Cells, Rows, ...) et la propriété cible (Value, Text, ...)
8• n'hésites pas à utiliser des variables pour représenter les objets, ça facilite l'écriture et la lecture du code,
--- par exemple :
Set MaPlage = Me.Range("B2:C8")
;
9• pour les mêmes raisons, n'hésites pas à utiliser aussi
With
et
End With
;
10• évites d'utiliser des propriétés ou méthodes d'objet héritées qui pourraient ne pas exister,
--- par exemple, au lieu de :
Sheets(1).Range("A1")
écrire
Workheets(1).Range("A1")
,
en effet l'objet Range n'appartient pas à Sheet mais à Worksheet ;
11• évites d'utiliser le Presse-Papier de Windows, préfères la copie directe avec une destination :
Source.Copy Destination
ou, pour copier que les valeurs :
Destination.valeur = Source.Valeur
.
12• commentes le code, penses à celui (peut-être toi) qui devra le déboguer dans deux ou trois ans !
13• respectes certaines règles de nommage des variables, notamment l'emploi d'un préfixe : le code est plus lisible par tous. Voir ici : https://argyronet.developpez.com/office/vba/convention/
14• n'écris pas de procédures fleuves (très longues), scindes les en différentes procédures élémentaires : là encore le code sera plus lisible.
15• libéres la mémoire dès que possible, en particulier pour les tableaux et les objets.

Cela devrait te permettre de résoudre ton problème, en particulier dans l'ordre les points 7, 9, et 4, 10, 1.

0
abdellah_tadjine Messages postés 191 Date d'inscription jeudi 30 novembre 2006 Statut Membre Dernière intervention 5 janvier 2022 6
12 avril 2020 à 21:33
merci pour ces précieux conseils.
je vais essayer.
0