XL 2019 Aide VBA

paradisecity1996

XLDnaute Nouveau
Bonjour à tous,
je me lance tout doucement sur le VBA. Je suis actuellement entrain de créer une base de données. J'ai réussi à automatiser l'ajout de données sur toute une ligne du tableau sans problème à partir d'un formulaire à remplir.

- Cependant, je n'arrive pas à implémenter quelque chose d'enfantin j'en suis conscient. Chaque ligne de mon tableau est identifiée par une référence (valeurs à partir de D5), c'est un nombre. J'aimerais que cette valeur augmente de 1 à chaque fois que j'ajoute une nouvelle référence dans la BDD. Il faut donc se positionner sur cette même colonne D descendre jusqu'à la dernière valeur non vide, prendre la valeur de l'avant dernière colonne et rajouter +1. Une fois cette valeur implémenter on se décale pour chaque info rentrée dans la boite de dialogue d'une colonne à droite.

- Deuxième question, certaine valeurs à implémenter dans ma boite de dialogue sont des valeurs avec des formats particuliers (m², €, €/m²...). Comment puis-je imposer ces formats automatiquement une fois ces valeurs implémentées. Je pourrais sélectionner la colonne entière et imposer un format mais je me demandais si il n'y avait pas une méthode plus "propre".

- Troisième et dernière question : La boite de dialogue apparait après avoir cliqué sur un bouton. Cependant, pour une raison que j'ignore, la taille de la boite de dialogue change tout le temps et est bien souvent illisible. Comment puis-je fixer les dimensions de cette boite de dialogue ?

Si vous avez besoin d'éclaircissements n'hésitez pas à demander.
Merci d'avance pour votre aide.

Code:
Private Sub btnajout_Click()
    Sheets("Source").Activate
    Range("D5").Select
    Selection.End(xlDown).Select 
    Selection.Offset(1, 0).Select
    Selection.Offset(0, 1).Select
    ActiveCell = txtdate.Value
    ActiveCell.Offset(0, 1).Value = txtadresse
    ActiveCell.Offset(0, 2).Value = txtcp
    ActiveCell.Offset(0, 3).Value = cboville
    ActiveCell.Offset(0, 4).Value = cbotypo
    ActiveCell.Offset(0, 5).Value = txtsurface
    ActiveCell.Offset(0, 6).Value = txtvendeur
    ActiveCell.Offset(0, 7).Value = txtacquéreur
    ActiveCell.Offset(0, 8).Value = txtpv
    ActiveCell.Offset(0, 10).Value = txttaux
    ActiveCell.Offset(0, 11).Value = txtcommentaire
    MsgBox "L'actif a bien été ajouté", vbOKOnly + vbInformation, "CONFIRMATION"
    Unload Me
    
End Sub
 

Pièces jointes

  • fichier forum.xlsm
    104.9 KB · Affichages: 3
Dernière édition:

sylvanu

XLDnaute Barbatruc
Supporter XLD
Bonjour Paradisecity,
Un eptit fichier test représentatif serait le bienvenu, cela aiderait à la compréhension et pour la validation d'une éventuelle réponse.
D'autre part, pour le code, utilisez la balise </> ( à droite de l'icone GIF) C'est beaucoup plus lisible et digeste.
Enfin, pourquoi tout votre code est en commentaire ? Il n'est pas fonctionnel ?
 

paradisecity1996

XLDnaute Nouveau
Bonjour Paradisecity,
Un eptit fichier test représentatif serait le bienvenu, cela aiderait à la compréhension et pour la validation d'une éventuelle réponse.
D'autre part, pour le code, utilisez la balise </> ( à droite de l'icone GIF) C'est beaucoup plus lisible et digeste.
Enfin, pourquoi tout votre code est en commentaire ? Il n'est pas fonctionnel ?
Merci pour votre réponse, vous avez raison. Je ne me suis pas mis à votre place :rolleyes:, au temps pour moi. Je viens de transférer le fichier et les lignes de code (merci pour le tips d'ailleurs ahah).
J'espère que c'est ducoup un peu plus clair pour vous. Si ce n'est pas le cas n'hésitez pas à demander.

Merci encore.
 

sylvanu

XLDnaute Barbatruc
Supporter XLD
Bonsoir,
Un essai en PJ, j'ai quelque peu modifier le début de la macro avec :
VB:
    Range("D5").Select
    DL = Range("F65500").End(xlUp).Row
    NoOp = 1 + Application.Max(Range("D5:D" & DL)) ' No max opération à mettre en colonne D
    Range("D" & DL).Select          ' on se positionne sur la dernière ligne non vide et on selectionne la cellule
    Selection.Offset(1, 0).Select   ' select = fonction décaler. Ici on se décale d'une ligne vers le bas
    ActiveCell.Value = NoOp         ' on inscrit le N° de l'opération.
    Selection.Offset(0, 1).Select   ' select = fonction décaler. Ici on se décale d'une colonne à droite
    ActiveCell = txtdate.Value
Pour les format, il faut utiliser cette syntaxe par exemple :
Code:
ActiveCell.Offset(0, 5).Value = Format(txtsurface, "0 m²")
ou encore
ActiveCell.Offset(0, 8).Value = Format(txtpv, "0 €")
Par contre, je ne vois pas pourquoi la boite de dialogue changerait de taille.
C'est un phénomène que je n'ai jamais observé, la taille est fixé par les propriétés de l'userform.
 

Pièces jointes

  • fichier forum.xlsm
    97.4 KB · Affichages: 4

Discussions similaires

  • Question
Microsoft 365 Code VBA
Réponses
2
Affichages
429

Membres actuellement en ligne

Statistiques des forums

Discussions
314 708
Messages
2 112 096
Membres
111 416
dernier inscrit
philipperoy83