Userform - Transfert données vers première colonne vide??

G.K. Messages postés 1 Date d'inscription mercredi 2 octobre 2013 Statut Membre Dernière intervention 2 octobre 2013 - 2 oct. 2013 à 22:46
jordane45 Messages postés 38145 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 25 avril 2024 - 7 oct. 2013 à 09:49
Bonjour à tous,

Je suis nouveau sur le forum en tant qu'inscrit, mais suis habitué d'en parcourir les questions et les solutions.

J'ai actuellement deux soucis avec Userform:

#1: J'ai créé mon Userform, tout est OK. J'aimerais simplement intégré une fonction qui me paraît pourtant être simplissime mais je ne trouve pas la solution...

J'aimerais que les données de mon Textbox1 soient intégrées en ligne 5 de la première colonne vide,
J'aimerais que les données de mon Textbox2 soient intégrées en ligne 6 de la première colonne vide,
J'aimerais que les données de mon Textbox3 soient intégrées en ligne 7 de la première colonne vide
Le but étant qu'à chaque fois que je renseigne le Userform et que je valide, les données soient envoyées dans une nouvelle colonne, à la suite de la précédente renseignée...

Pour le moment, je l'avais fais différemment mais avait trouvé une solution par ligne et non par colonne comme je souhaite l'avoir...

#2: J'aimerais également que la forme de chaque nouvelle colonne ainsi créée reprenne celle de la précédente (c'est à dire l'épaisseur des traits des cellules, la couleurs des cellules etc...)

Un grand grand merci à ceux qui me liront, et un énorme merci à ceux qui tenteront de m'apporter leurs lumières.

2 réponses

jordane45 Messages postés 38145 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 25 avril 2024 344
Modifié par jordane45 le 7/10/2013 à 01:03
Bonjour,


Je ne vois pas de difficultés dans votre demande.
Avez-vous commencé à écrire du code ? Si oui, sur quoi bloquez vous ?

Trouver la première colonne vide :
If Range("iv1").End(xlToLeft).Column > 1 Then
    num_col = Range("iv1").End(xlToLeft).Column + 1
Else
    num_col = 1 'aucune colonne utilisée..
End If



Coller des valeurs à partir d'un textbox contenu dans un userform.
Cells(5,num_col).value = Me.TextBox1.value 
Cells(6,num_col).value = Me.TextBox2.value 
' etc..


J'aimerais également que la forme de chaque nouvelle colonne ainsi créée reprenne celle de la précédente (c'est à dire l'épaisseur des traits des cellules, la couleurs des cellules etc...)
Un petit coup d'enregistreur de macro devrait largement suffire à vous donner le code à utiliser


Cordialement,
Jordane
0
ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 211
7 oct. 2013 à 08:01
Bonjour,
On va encore me dire je ne sais trop quoi à propos de la sémantique, mais le développement impose la rigueur.
Qu'est donc exactement, pour le demandeur, une "colonne vide" ?
Pour moi, c'est une colonne dont aucune des lignes n'est remplie.
On voit bien ici la nécessité d'être précis, car la solution à la difficulté exposée est différente selon la définition de cette colonne.
La réponse donnée entraîne le remplissage à partir de la colonne suivant la dernière remplie de chaque ligne.
La réponse serait totalement différente si le remplissage devrait être fait, sur chaque ligne, à partir de la colonne suivant la dernière colonne contenant une ou plusieurs valeurs.
Ce n'est pas dut tout la même chose !
0
ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 211
Modifié par ucfoutu le 7/10/2013 à 08:13
Lorsque ce point aura été élucidé (pas avant), nous verrons comment éviter de faire 3 va-et-vient avec la feuille et agir d'un seul coup si, comme on peut le "deviner", la première colonne à remplir est toujours la même.
0
jordane45 Messages postés 38145 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 25 avril 2024 344
7 oct. 2013 à 09:20
Hello Ucfoutu, je pense que l'utilisateur souhaite trouver LA première colonne non remplie (ou non utilisée.. vide quoi), puis y inserer les valeurs de ses InputBox. Je ne pense pas qu'il souhaite effectuer un décalage POUR chaque Input.
On verra bien lorsqu'il répondra ^^
0
ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 211
Modifié par ucfoutu le 7/10/2013 à 09:36
Bonjour, jordane,
oui : on verra bien.
Mais je doute quant à moi de l'utilité d'alimenter des colonnes avec des données diverses. Elles correspondent en général à un type de données (très souvent "titré, d'ailleurs).
Attention, par ailleurs : la première colonne vide d'une ligne n'est pas toujours forcément celle qui suit la dernière remplie (tout dépend de la conception de l'appli, du caractère obligatoire ou non de la saisie de certaines données, etc...)

PS ta ligne :
If Range("iv1").End(xlToLeft).Column > 1
traite ligne par ligne et n'exclut donc pas ce "décalage" possible

PS2 : et si l'on cherche la 1ère colonne d'une ligne qui suit la dernière remplie, ce serait :
Cells(i, Columns.Count).End(xlToLeft).Column
0
jordane45 Messages postés 38145 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 25 avril 2024 344
7 oct. 2013 à 09:49
PS2 : et si l'on cherche la 1ère colonne d'une ligne qui suit la dernière remplie, ce serait :
Cells(i, Columns.Count).End(xlToLeft).Column

Oui en effet. J'ai été un peut trop vite pour répondre.
bien vu.
0
Rejoignez-nous