Code VBA à modifier "Passer à la ligne inférieure"

Bonjour,

Dans le fichier ci-joint, j'ai créé un formulaire "Précommande" avec VBA (voir bouton "Formulaire" dans la feuille "Formulaire_de_saisie").

Le bouton "SOURCE" du formulaire renvoi à ma base de données contenue dans la feuille "Suivi_des_commandes".

Bien que novice en VBA, j'ai essayé d'appliquer un code à mon Bouton "NOUVEAU" afin d'ajouter une ligne dans ma base de données.

Question : mon code fonctionne pour alimenter la première ligne en dessous des entêtes de mon tableau uniquement. Le code de me permet pas en revanche, lors d'une nouvelle saisie dans le formulaire, de passer à la ligne du dessous.

Remarque : Mon tableau contient actuellement 200 lignes, mais je serai amené à en saisir davantage et donc le code en question, doit me permettre d'agrémenter les lignes de mon tableau au-delà de 200 lignes.

Un grand merci par avance pour vos retours.

Cordialement,

Bonjour,

une correction

Bonjour,

Avec le code que vous m'indiquez, les données de ma première saisie vont s'inscrire après la ligne n°200.

Merci à vous.

Bonjour,

j'ai mis une nouvelle correction.

Bonjour,

Oui, c'est le résultat attendu. En revanche, j'ai besoin de préserver ma base sous forme de tableau, car ce tableau est intégré dans des formules de calcul.

Merci

Bonjour, Salut h2so4 !

Tu utilises un tableau Excel !

1er conseil : tu limites ton tableau aux données qu'il contient.

Aucune ligne vide en fin de tableau. Si tu démarres avec un tableau vide, il ne devra comporter qu'une ligne (vide car pas encore de données, et cette ligne est nécessaire pour que le tableau existe.

Une fois la première ligne remplie, toute ligne ajoutée sous le tableau sera incorporée automatiquement au tableau par Excel, qui étendra en même temps la mise en forme, les formules et listes déroulantes éventuelles, etc.

Il te suffit de laisser faire Excel.

2e conseil : avec un tel tableau, tu travailles directement avec le tableau, tu ne toccupes plus de la feuille.

Excel insère atomatiquement un nom (le nom donné au tableau) dans le gestionnaire de noms. Ce nom correspond à la plage de données du tableau, tu peux le vérifier dans le gestionnaire de noms.

Tu détermines alors la ligne d'insertion par rapport à cette plage... Exemple :

    With [Tableau7]
        Lni = .Rows.Count + 1
        If Lni = 2 Then Lni = IIf(.Cells(1, 1) = "", 1, 2) 'Correctif éventuel au démarrage...
        'Affectation des valeurs...
    End With

3e conseil : toujours qualifier tes expressions renvoyant un objet, notamment celles qui renvoient un objet Range, les faire référer explicitement à la feuille qui les contient. Ton code sera plus fiable et plus rapide.

NB- Pas d'application en appliquant les conseils précédents qui te feront éviter de passer par la feuille... )

4e conseil : éviter les énumérations disgracieuses listant une affectation de données cellule par cellule.

Les boucles sont faites pour ça !

4e conseil bis : et on peut constituer en tableau la ligne à affecter de façon à l'affecter globalement.

Ce sera plus rapide.

(Quelques aménagements à faire car tes noms de contrôle ne favorisent pas l'utilisation des meilleures méthodes mais on peut s'y adapter en définissant un tableau des noms de contrôles de façon à les parcourir en boucle...)

5e conseil : les dates doivent toujours être explicitement converties en dates lors de leur affectation.

Cela t'évitera des erreurs d'inversion jour/mois...

Autre conseil : 2 modules standard ! C'est déjà un début de multiplication inutile de modules.

Je ne saurais trop conseiller de ne créer un second module qu'avec de solides raisons tenant à la nature du code destiné à y être placé (susceptible de se voir appliqué un traitement différent...). Tu travailleras mieux et plus vite sur ton code...

Cordialement.

Rechercher des sujets similaires à "code vba modifier passer ligne inferieure"