Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

cellule active à remplacée par cellule définie

  • Initiateur de la discussion romfret
  • Date de début
R

romfret

Guest
Bonsoir le forum !



J'ai un p'ti bleme !!!
Avant tou voici mon code vba :




Private Sub CommandButton1_Click()
'teste si un texte a été entré, si non, le programme averti l'utilisateur et s'arrête
If Userform1.TextBox1.Text = "" then
MsgBox "Vous n'avez rien saisi;" & Chr(10) & "fin du programme! "
Exit Sub
Else
'Si un texte a été entré, le programme le copie dans la cellule active et se déplace d'une cellule vers le bas
Activecell.value=Userform1.TextBox1.Text
Activecell.Offset(1,0).select
End If
End Sub





Mon probleme vient de ces lignes (elles sont les dernieres) :

Activecell.value=Userform1.TextBox1.Text
Activecell.Offset(1,0).select


Voila. A lieu que le message ecrit vienne ce mettre dans le cellule active , il faudrai qu'il vienne dans une cellule défini mais que le texte écrit par la suite aille vers le bas de cette cellule définie.

Avez-vous compris? Je reformulerai si besoin .



Merci d'avance ......................

@mic@lement Romfret
 
L

LaurentTBT

Guest
Bonsoir Romfret.
Si ce que tu souhaites est d'écrire la contenu du textbox sous la dernière cellule utilisée d'une certaine colonne, alors voici la ligne:
Range("C65536").End(xlUp).Cells(2, 1)=textbox1

Mais je ne suis pas tout à fait sûr que ce doit ce que tu recherches.

Bonne soirée. Laurent.
 
R

romfret

Guest
Re....



Voila le code que j'ai maintenant :

_____________________________________________​

Private Sub CommandButton1_Click()
'teste si un texte a été entré, si non, le programme averti l'utilisateur et s'arrête
If Userform1.TextBox1.Text = "" Then
MsgBox "Vous n'avez rien saisi;" & Chr(10) & "fin du programme! "
Exit Sub
Else
'Si un texte a été entré, le programme le copie dans la cellule active et se déplace d'une cellule vers le bas
Range("C6").End(xlUp).Cells(2, 1) = TextBox1
End If


_____________________________________________​



Voila . On s'approche du but mais sur ligne : Range("C6").End(xlUp).Cells(2, 1) = TextBox1
(le code que tu m'a donné) Quand je met C6 ca vienr sur C2.
Mais en fait ce que je voudrait c'est que ca me le mette a la suite d'un tableau ( je suis compliqué LOL) .......



Merci de ta (vos) réponse(s)

@mic@lement, Romfret
 
L

LaurentTBT

Guest
A priori, tu n'as pas de données entre C1 et C6 et tu souhaites démarrer à C6, n'est-ce-pas? Si j'ai bien compris ton problème, alors voici le code:
If range("C6")="" then
range("C6")=Textbox1
else
Range("C65536").End(xlUp).Cells(2, 1) = TextBox1
end if

En effet, quand il n'y a aucune donnée dans la colonne C, Range("C65536").End(xlUp).Cells(2, 1) correspond à C2.
A partir du moment où tu as une donnée quelque part dans la colonne C, alors cette même ligne correspond à la cellule immédiatement sous la dernière cellule remplie de la colonne C.

@+. Laurent.

NB: attention, c'est Range("C65536").End(xlUp).Cells(2, 1) = TextBox1
 
R

romfret

Guest
Bonjour Laurent , Le forum;


Comme promis je te tiens au courant en te faisant une piece jointe ........



@mic@lement , romfret
 

Pièces jointes

  • Pour_LaurentTBT.zip
    11.4 KB · Affichages: 15
L

LaurentTBT

Guest
Salut Romfret, bonsoir le forum.

Sympa, après ce petit dimanche en pleine chaleur, de voir que le boulot d'hier semble avoir porté ses fruits. Cependant, dans ta pièce jointe, il manque la macro.
En effet, la macro affectée au bouton est 'C:\LSD\PAQ-LSD.xls'!saisir_un_client, soit toujours sur ton fichier d'origine!

Il faut que tu recopies cette macro dans le fichier que tu m'as joint, puis réaffecter cette macro au bouton!

Je suis toujours fana de voir le résultat.

@+. Laurent.
 
R

romfret

Guest
Re...


Et voila comme promis la piece jointe .... tiens moi au courant !
Merci.



Ps:extrait le fichier dans : "C:/LSD" C'est important !!!!!!


@mic@lement, romfret
 
R

romfret

Guest
Re...


Mince je suis aller tro vite j'ai oublié la piece jointe ... LOL
 

Pièces jointes

  • PAQ-LSD.zip
    31.8 KB · Affichages: 14
  • PAQ-LSD.zip
    31.8 KB · Affichages: 15
  • PAQ-LSD.zip
    31.8 KB · Affichages: 19
L

LaurentTBT

Guest
OK, j'ai bien reçu.

Après un rapide coup d'oeil, la question initiale est effectivement résolue. En revanche, j'essayerai si j'en ai le temps (et si tu le souhaites) de te proposer quelques optimisations.

Juste une première remarque: tu n'es pas obligé de créer autant de modules que de procédures. Tu peux les regrouper.

Rapidement, un point sur lequel on peut travailler, c'est l'ajout d'une nouvelle ville. Sur le userform, si le nouveau client est d'une ville qui ne fqit pas partie de la liste, il faut que l'utilisateur la saisisse 2 fois (une fois pour enregistrer le client, une fois pour ajouter la ville à la liste. et même une fois de plus avec ton deuxième userform. Il y a possibilité de simplifier tout cela.

Mais bon, là je commence à caler. Alors à demain (sans rien te promettre toutefois).

Bonne nuit. Laurent.
 
L

LaurentTBT

Guest
Salut Romfret, Bonjour à tous.

Désolé de ne pas t'avoir envoyé le fichier plus tôt.

J'ai donc travaillé sur un seul Userform. Tout d'abord, j'ai donné des noms à chaque contrôle de manière à les identifier facilement dans le code. Par exemple: "TbxNom" au lieu de "TextBox1".
Ensuite j'ai utilisé la propriété ListIndex de la ComoBox "CbxVille". Ce numéro d'index me donne justement la place de la ville choisie dans la liste et me permet de retrouver aisément le Code postal correspondant. Mais surtout, si elle vaut -1 cela signifie que c'est une nouvelle ville qui est saisie, et qu'il faut la rajouter à la liste. Cela permet de ne pas passer par une boite de saisie supplémentaire.
Regarde tout cela, et si tu as des questions, n'hésite pas.

Bonne journée. Laurent.
 

Pièces jointes

  • PAQ-LSD.zip
    22.9 KB · Affichages: 16
  • PAQ-LSD.zip
    22.9 KB · Affichages: 19
  • PAQ-LSD.zip
    22.9 KB · Affichages: 16

Discussions similaires

Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…