Formulaire VBA - LIGNES

Bonjour à tous et à toutes,

je suis nouveau ici.

Mon problème est que j'ai crée un fichier excel (formulaire de données avec VBA), il fonctionne bien mais il y a juste un souci qui me gène. En effet, je veux que quand je vide mes données dans le tableau et quand je tape des nouveaux de données sur le formulaire VBA celles ci apparaissent sur la ligne en dessous de l'en-tête et non la ligne où je m'étais arrêté sur le précédent travail.

Je vous joins mon travail, et vous explique tous dans le fichier.

En vous remerciant de votre aide.

Bonjour FraicheurM,

je te retourne ton fichier modifié :

si besoin, tu peux demander une adaptation.

merci de me dire si ça te convient.

dhany

Le formulaire est bien mais juste qu'il y a un petit souci. En effet j'ai vidé la colonne numéro je l'ai testé mais il enregistre les données sur la ligne 3, c'est à dire il enregistre numéro 2. A savoir que les numéros je vais les attribuer manuellement. Donc y a t-il moyen de l'arranger?

Tu a écrit :

mais il enregistre les données sur la ligne 3

j'comprends pas ta demande : c'que j'ai fait est indépendant d'la colonne A "", car ça cherche la ligne sur laquelle écrire les données du formulaire selon la colonne B "Nom et prénoms" ; donc quand j'efface les numéros de A2:A9, le résultat est identique que sans l'effacement : ça écrit d'abord en ligne 2, puis en ligne 3, etc... mais ça m'le fait pas à partir de la ligne 3 ! donc là : mystère !

dhany

Bonjour FraicheurM, Bonjour Dhany

Pour ma part la gestion via un formulaire pour un insérer des données dans fichier avec tableau "inséré" m'a toujours posé des problèmes

Voici ma proposition sans l'insertion de tableau, mais simplement une MFC pour la colorisation des lignes.

Et aussi une autre approche du code VBA dans le formulaire.

Bonjour dhany,

J'ai réessayé le formulaire et c'était une erreur ma part . En effet, tu as fait ce que je voulais.

De même pour le deuxième formulaire qui m'a été envoyé (celui de et1000lio).

Merci beaucoup à vous deux.

Par contre, dhany j'aimerais bien connaitre le code que tu as mis. Je l'ai lu mais j'arrive pas à le comprendre.

Cordialement.

Bonjour FraicheurM, le forum,

merci pour ton retour d'infos ; ça m'rassure que mon code VBA marche bien !


pour l'explication : tout est dans le choix de la bonne ligne, et c'est fait en 2 étapes :

a) lig = Cells(Rows.Count, 2).End(xlUp).Row ; ça retourne la dernière ligne selon la colonne B, oui ; mais pour ton tableau structuré, c'est la dernière ligne du tableau même si elle est vide, donc ça retourne 9 (à considérer comme une 1ère approche).

b) Do While IsEmpty(Cells(lig, 2)): lig = lig - 1: Loop : depuis la ligne dont le n° a été trouvé précédemment (donc à partir de 9), ça boucle vers le haut tant que la cellule ligne lig, colonne B est vide ➯ ça s'arrête dès que ça trouve une donnée ; et on écrira sur la ligne du dessous car j'ai mis lig + 1 dans l'instruction qui suit : With Cells(lig + 1, 1)

note bien que si ton tableau ne contient aucune donnée, ça marche aussi car la boucle vers le haut s'arrête sur l'entête de la colonne B, donc ici en B1 : "Nom et Prénoms" ; et dans ce cas : lig + 1 = 2 : on va écrire en ligne 2.

dhany

ajout pour cette partie de code VBA :

  With Cells(lig + 1, 1)
    .Value = TextBox1        ' Numéro
    .Offset(, 1) = TextBox2  ' Nom et prénoms
    .Offset(, 2) = TextBox3  ' Adresse
    .Offset(, 3) = TextBox4  ' Code Postal
    .Offset(, 4) = TextBox5  ' Téléphone
    .Offset(, 5) = TextBox6  ' Documents
  End With

le With référence la cellule en ligne lig + 1, colonne 1 (donc colonne A)

si lig + 1 est par exemple 10 :

.Value est donc le contenu de la cellule colonne A10 ; c'est donc bien le

.Offset(, 1) est la cellule qui est sur la même ligne et 1 colonne à droite, donc B10

.Offset(, 2) est la cellule qui est sur la même ligne et 2 colonnes à droite, donc C10

.Offset(, 5) est la cellule qui est sur la même ligne et 5 colonnes à droite, donc F10

c'est sur la même ligne car y'a rien entre la parenthèse gauche et la virgule ;

si je mettais par exemple .Offset(8, 4) ça serait 8 lignes plus bas et

4 colonnes à droite, donc la cellule E18


j'pense que ça devrait aller, mais si besoin, n'hésite pas à demander plus d'infos.

dhany

Bonjour dhany, Bonjour le Forum

Merci pour tous les informations que tu as pu m'apporter. Je penses qu'elle vont m'être bénéfique pour un prochain tableau que je vais créer.

merci pour ton retour ! bonne chance pour ton prochain tableau !

dhany

Rechercher des sujets similaires à "formulaire vba lignes"