XL 2019 BDD VBA - nombreux problèmes

paradisecity1996

XLDnaute Nouveau
Bonjour à tous,

Me revoilà une fois de plus avec le même fichier mais des demandes différentes ahah. Je continue d’avancer sur l’élaboration de mon fichier de BDD immobilier.

Voici un petit résumé de l’objectif de ce fichier :

Je souhaite créer (dans un premier temps) une bdd de transactions immobilières. Pour se faire, j’ai recours à la VBA que je commence à apprendre petit à petit. Dans cette BDD je souhaite automatiser au maximum afin de limiter toute fausse manipulation et rendre ça facile et efficace. Je compte créer trois fonction : ajouter un actif, modifier un actif et supprimer un actif. J’ai déjà pas mal avancé sur ce fichier notamment en partie grâce à l’aide de la communauté de ce site 😊 Cependant je rencontre quelques problèmes.

Voici les problèmes que je rencontre actuellement :

1) J’ai un gros problème de stabilité causé par la boucle range lors de l’ajout d’un actif (code lié au click du bouton ajouter dans le formulaire d’ajout appelé ici fmrinvest), parfois je n’ai aucun soucis, mais souvent (même très souvent) je vais avoir excel qui plante avec le code d’exécution ‘-2147417848 (80010108)’ et le message « La méthode ‘Value’ de l’objet ‘Range’ a échoué ». Je ne comprends pas pourquoi…

Je réexplique ce que je souhaite faire avec cette fonction.
Lorsque je clique sur le bouton ajouter un actif, le formulaire d’ajout « fmrinvest » apparait. Je remplis manuellement les infos, je clique sur ajouter. Ces infos viennent s’ajouter dans mon tableau de BDD. Cependant, chaque ligne du tableau est référée par un numéro de ligne # en colonne D (c’est pas vraiment une référence attribuée à un actif mais plus pour savoir combien d’actifs sont référés). Le code doit donc ajouter automatiquement la nouvelle référence en sélectionnant la dernière colonne non vide puis faire +1 par rapport à la valeur précédente.

Voici le code pour la fonction ajouter :
VB:
Private Sub btnajout_Click()
    Feuil11.Activate
    Range("D5").Select
    DL = Range("F10000").End(xlUp).Row
    NoOp = 1 + Application.Max(Range("D5:D" & DL)) 
    Range("D" & DL).Select          
    Selection.Offset(1, 0).Select   
    ActiveCell.Value = NoOp         
    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 = Format(txtsurface, "### ### m²") 'format nickel mais pas numérique
    ActiveCell.Offset(0, 6).Value = txtvendeur
    ActiveCell.Offset(0, 7).Value = txtacquéreur
    ActiveCell.Offset(0, 8).Value = Format(txtpv, "### ### ### €")  'Format nickel mais pas numérique
    ActiveCell.Offset(0, 10).Value = Format(txttaux, "#.###0 %") '
    ActiveCell.Offset(0, 11).Value = txtcommentaire
    
End Sub

2) Problème de format comme demandé déjà sur ce forum précédemment, j’aimerais appliquer des formats aux données, surfaces, PV et taux. Sauf qu’il y a deux sujets
  • Je n’ai pas de problème à obtenir les formats souhaités avec la surface et le PV. Cependant, je réutilise ces données automatiquement dans le tableau dans la colonne N (PV AEM/m²) en divisant la colonne PV par la colonne surface. Or, ces valeurs ne sont pas des données numériques mais des données de type texte. J’aimerais donc trouver un moyen de rendre ces données de type numérique afin d’appliquer le calcul tout en gardant les formats souhaités.
    • Format(txtsurface, "### ### m²")
    • Format(txtpv, "### ### ### €")
  • J’ai un petit soucis concernant le format du pourcentage pour le taux, j’aimerais n’avoir à taper dans la texte box que 2.75 (et non 0.0275) pour qu’il m’affiche 2.75% et j’aimerais aussi pouvoir taper 2.7 ou encore 2 sans qu’il ne fasse d’arrondis ou autre chose. Actuellement je suis au format suivant :
    • Format(txttaux, "#.###0 %") --> pas pratique et surtout j’ai des arrondis ou des valeur qui n’ont parfois rien à voir…
3) J’aimerais lorsque je clique sur le bouton ajouter qui lance la macro et m’amène au formulaire d’ajout « fmrinvest », que le numéro de la nouvelle référence (que je remplis via le formulaire) s’affiche automatiquement. Par exemple, dans ma bdd j’ai 17 références, je souhaite en ajouter une nouvelle, je clique donc sur ajouter et dans le formulaire qui apparait, on voit automatiquement la nouvelle référence en haut à droite du formulaire dans la texte box à droite du « # ».

4) MODE SUPPRESSION : lorsque l’on clique sur le bouton « supprimer un actif », j’aimerais utiliser le même principe que pour « modifier » un actif. C’est-à-dire, je sélectionne la référence de l’actif à supprimer, les informations ressortent dans les textbox afin d’être sûr que c’est le bon actif a supprimer et lorsque que l’on clique sur supprimer, la ligne de l’actif en question se supprime du tableau. J’ai réussi à coder ce processus à la seule différence que ce qui se supprimer c’est la ligne entière de la feuille et non la ligne du tableau.

Je sais que je demande beaucoup de chose, mais je butte en touche, je n’ai démarré à apprendre le VBA qu’il n’y a peu de temps et malheureusement je suis pressé par des dates de rendu d’école, je n’ai donc pas le choix que demander votre aide.

J’espère encore une fois que mes demandes sont plus ou moins clairs. Je vais joindre le fichier afin que vous puissiez comprendre un peu mieux. N’hésitez pas à poser des questions si besoin.

Merci d’avance.
 

Pièces jointes

  • Fichier forum.xlsm
    72.4 KB · Affichages: 12

paradisecity1996

XLDnaute Nouveau
Bonjour et merci beaucoup pour votre aide et votre temps une fois encore ! Cela correspond exactement à ce que j'essayais de faire mais sans succès ahah. Il faut que je me penche un peu pour comprendre les erreurs que j'avais dans mon précédent code.

Merci encore et excellente journée.
 

Discussions similaires

Réponses
12
Affichages
277
Réponses
2
Affichages
329
Réponses
3
Affichages
202

Statistiques des forums

Discussions
315 087
Messages
2 116 084
Membres
112 655
dernier inscrit
fannycordi