Décaler d une ligne a l autre VBA

Fermé
xerox - 14 juin 2010 à 09:37
Mike-31 Messages postés 18354 Date d'inscription dimanche 17 février 2008 Statut Contributeur Dernière intervention 1 janvier 2025 - 14 juin 2010 à 23:43
Bonjour,

Actuellement j ai une userform avec plusieurs ComboBox , TextBox et ListBox.

J aimerai savoir quel formule il faut utiliser pour que quand sous ma userform dans une TextBox je choisi une valeur, elle se mette sous une feuille excel par exemple en A2.

Mais je veut aussi que quand une 2 ème fois je choisi sur cette TextBox une valeur, elle se mette en A2 et par conséquent la valeur que j avais choisi en 1er passe en B2 etc....


Merci

A voir également:

3 réponses

Mike-31 Messages postés 18354 Date d'inscription dimanche 17 février 2008 Statut Contributeur Dernière intervention 1 janvier 2025 5 110
14 juin 2010 à 11:03
Salut,

pour le Textbox par exemple et faire simple, ce code décalera indéfiniment vers la droite la saisie dans le textbox, à adapter pour les autres contrôles

Private Sub TextBox1_Exit(ByVal Cancel As MSForms.ReturnBoolean)
If [A2] = "" Then
[A2] = TextBox1
Else
[A2].End(xlToLeft).Offset(0, 1) = TextBox1
End If
End Sub

si tu veux simplement déplacer la deuxième saisie en B2 si A2 est renseignée, remplace la ligne [A2].End(xlToLeft).Offset(0, 1) = TextBox1
par [B2] = TextBox1
0
dobo69 Messages postés 1587 Date d'inscription vendredi 24 juillet 2009 Statut Membre Dernière intervention 30 juin 2013 827
14 juin 2010 à 11:21
bonjour Mike-31..
En fait cela se passe par là... :
https://forums.commentcamarche.net/forum/affich-18103293-vba-rengement-sur-feuille
j'ai proposé qqchose mais qui très certainement perfectible vu mon niveau en VBA....
0
Mike-31 Messages postés 18354 Date d'inscription dimanche 17 février 2008 Statut Contributeur Dernière intervention 1 janvier 2025 5 110
Modifié par Mike-31 le 14/06/2010 à 11:46
Salut Dodo,

Je viens de m'appercevoir d'une erreur de saisie de mon code, pour avoir un décale indéfini mieux vaut partir de X2 par exemple et non de A2 qui compliquerait le code et rechercher la première cellule non vide en partant de la droite

Private Sub TextBox1_Exit(ByVal Cancel As MSForms.ReturnBoolean)
If [A2] = "" Then
[A2] = TextBox1
Else
[X2].End(xlToLeft).Offset(0, 1) = TextBox1
End If
End Sub
A+
Mike-31

Une période d'échec est un moment rêvé pour semer les graines du savoir.
0
If [A2] = "" Then

Quand j utilise ton code j ai un message d erreur qui apparait qui me dit erreur de compilation sur la ligne du dessus et en particulier sur A2
0
Mike-31 Messages postés 18354 Date d'inscription dimanche 17 février 2008 Statut Contributeur Dernière intervention 1 janvier 2025 5 110
Modifié par Mike-31 le 14/06/2010 à 16:40
Re,

Il n'y a aucune raison sur ce code qui dit
If [A2] = "" Then (si A2 est vide alors

[A2] = TextBox1 (A2 = textbox)

Else (sinon)

[X2].End(xlToLeft).Offset(0, 1) = TextBox1 (on place la sélection en X2 pour s'arrêter sur la première cellule vide rencontrée après A2 ou B2 si A2 n'est pas vide ou C2 si B2 n'est pas vide etc ...)

Il est possible que le code textbox1 ne corresponde pas à ton textbox qui est 2, 3 ou plus !

si tu ne trouves pas je te ferai un petit montage
A+
Mike-31

Une période d'échec est un moment rêvé pour semer les graines du savoir.
0
eriiic Messages postés 24603 Date d'inscription mardi 11 septembre 2007 Statut Contributeur Dernière intervention 15 décembre 2024 7 249
14 juin 2010 à 19:49
Bonjour mike,

A lire la demande je me demande s'il ne faut pas plutôt insérer une cellule en A2 pour décaler les saisies précédentes vers la droite et mettre la plus récente toujours en A2 (?)
Et je trouve genant la différence entre le titre (Décaler d une ligne...) et l'exemple qui décale d'une colonne....
Ca serait bien que le demandeur précise ces points

eric
0
dobo69 Messages postés 1587 Date d'inscription vendredi 24 juillet 2009 Statut Membre Dernière intervention 30 juin 2013 827
Modifié par dobo69 le 14/06/2010 à 20:22
bonsoir eriiic et mike,
c'est à priori ca le sujet mais xerox ne sait pas trop ou il en est. Perso j'ai jeté l'éponge sur l'autre topic qu'il avait précédemment ouvert. Je sais que je ne suis pas une flèche en VBA mais tout de meme... : contradictions sur contradictions et pas d'explications claires sur le pourquoi du comment... Donc ne perdez pas trop votre temps...
https://forums.commentcamarche.net/forum/affich-18134714-decaler-d-une-ligne-a-l-autre-vba#2
0
Salut eric tu as raison moi je veut faire un décalage de ligne.
Et donc je veut insérer une cellule en A2 pour décaler les saisies précédentes et mettre la plus récentes toujours en A2
0
eriiic Messages postés 24603 Date d'inscription mardi 11 septembre 2007 Statut Contributeur Dernière intervention 15 décembre 2024 7 249
Modifié par eriiic le 14/06/2010 à 22:37
Dobo,
Ah oui !!! quand même...

Mike,
Tu devrais suivre le lien fourni par dobo à 11:21, c'est très instructif

xerox,
C'est gentil de m'avoir adressé ta réponse mais je ne faisais que relever une différence de lecture entre moi et mike.
Pour ma part je ne participerais pas plus à ce sujet, je privilégie les demandeurs clairs et précis (tu as de très gros progrès à faire), de préférence inscrits sur le site.
De plus je fuis comme la peste ceux qui comme toi postent en double (sans prévenir dans un post ou l'autre) dans un manque total de respect des intervenants, et leur gâchent le temps.

eric

PS: chapeau pour la patience de certains...
0
Mike-31 Messages postés 18354 Date d'inscription dimanche 17 février 2008 Statut Contributeur Dernière intervention 1 janvier 2025 5 110
14 juin 2010 à 23:43
Re,

Pas mal d'occupation, j'ai du mal à suivre les discussions. Lancer plusieurs discussions sur le même sujet et avec des pseudos multiples est contraire à la charte c'est jouer des intervenants bénévoles qui concentrent leurs efforts sur un sujet alors que des membres respectueux attendent une réponse.
Pour ma part mon intervention s'arrêtera là

Mike-31
0