XL 2019 Un exemple

KHEROUBI

XLDnaute Junior
Salut
j'ai un cas suivant :
J'ai un tableau et je veux le compléter par un bouton "Ajout d'un avenant" qui affiche une donnée qu'on veux la remplir,
voici une fichier qui explique mon cas
Merci
 

Pièces jointes

  • exemple.xlsm
    20.4 KB · Affichages: 19

sylvanu

XLDnaute Barbatruc
Supporter XLD
Bonsoir Kheroubi,
Pas bien compris votre demande donc j'ai fait ce qui me semblé pertinent en PJ avec :
VB:
Private Sub ComboBox1_Change()
    N = Application.Match(FrmAvenant.ComboBox1, Range("C:C"), 0)
    FrmAvenant.TxtNom = Cells(N, "A")
    FrmAvenant.TextBox1 = Cells(N, "B")
End Sub
Private Sub CommandButton1_Click()
    N = Application.Match(FrmAvenant.ComboBox1, Range("C:C"), 0)
    If FrmAvenant.NoAvenant = "Avenant 01" Then
        Cells(N, "D") = FrmAvenant.Durée
        Cells(N, "E") = FrmAvenant.Montant
    ElseIf FrmAvenant.NoAvenant = "Avenant 02" Then
        Cells(N, "F") = FrmAvenant.Durée
        Cells(N, "G") = FrmAvenant.Montant
    End If
End Sub
 

Pièces jointes

  • exemple (7).xlsm
    19.2 KB · Affichages: 8

soan

XLDnaute Barbatruc
Inactif
Bonjour KHEROUBI, sylvanu,

voici ton fichier en retour. :)

regarde partout, car j'ai fait de très nombreuses modifs partout ! 😁

* présentation de la feuille de calcul améliorée
* présentation du UserForm améliorée

* pour ouvrir le formulaire : Ctrl e ou clic / bouton « Ajout d'un Avenant »
* touche Echap pour en sortir (sur le champ N° Contrat, ou sur le bouton Ajout)

* touche TAB pour passer d'un champ au suivant, puis aux 2 boutons
* Maj TAB : idem, mais dans l'ordre inverse
* tu ne peux pas passer au champ suivant si le champ actuel est vide !

* Durée de l'avenant : entre 1 et 36 mois (= 3 ans) ; à adapter !
* pour le Montant, tu peux saisir une virgule ou un point

* ça écrit toute la ligne, y compris Sous-traitant, Désignation, N° contrat

* après écriture des données sur la feuille de calcul, les champs du UserForm
sont automatiquement effacés ➯ c'est prêt pour une nouvelle saisie !

* regarde le nouveau nom de ton 1er tableau ; regarde aussi le nom
de tous les contrôles du UF

* n'oublie pas de regarder aussi tout le code VBA !

si besoin, tu peux demander une adaptation.
à te lire pour avoir ton avis. ;)


soan
 

Pièces jointes

  • exemple.xlsm
    28.9 KB · Affichages: 18

KHEROUBI

XLDnaute Junior
Bonjour SOAN, SYLVANU
merci pour l'aides mais j'ai un problème avec le fichier que vous avez amélioré SOAN quand je saisi les données et je valide elle affiche une erreur " methode 'value' of object 'range' failed "
sure j'étais pas claire dans mon cas : je voulais dire que j'ai deux contrats par exemple "AL 5 20 " et "LOC 12 19" et je voulais ajouter leurs avenants.
Pour le cas de SYLVANU c'est bien ce que je voulais juste peut on convertir votre formule en VBA.
MERCI.
 

soan

XLDnaute Barbatruc
Inactif
Bonjour KHEROUBI,

tu as écrit : « quand je saisis les données et je valide elle affiche une erreur
"méthode 'value' of object 'range' failed " ».

mais quand tu saisis quelle donnée ? tu es sur quel champ du UserForm ?
c'est sur la liste « N° Contrat » ? ou sur le champ « Nom de l'avenant » ?
ou sur quel autre champ ?

tu as écrit : « je voulais ajouter leurs avenants » ; j'en ai ajouté un 3ème,
et j'ai saisi avec "AL 5 20" ou "LOC 12 19" ; je n'ai pas eu d'erreur :


Image.jpg


au départ, je pensais qu'il n'y aurait que 2 avenants, pas plus ; sans avoir
rien changé au code VBA, c'est ok : ça ajoute 2 colonnes H et I pour le
3ème avenant, et ça écrit les données au bon endroit, comme tu peux
le voir sur l'image ; bien sûr, avant de saisir les lignes 6 et 7, j'ai d'abord
ajouté « Avenant 03 » dans le Tableau "Avenants" (Feuil2) ; il faut juste
corriger les en-têtes : en H3, au lieu de « Montant de l'avenant n° 03 »
met : « Durée de l'avenant n° 3 » ; puis en I3, au lieu de « Montant de
l'avenant n° 4 », met : « Montant de l'avenant n° 3 ».

je n'ai pas réussi à reproduire ton erreur ; qu'as-tu fait exactement ?
détaille bien tout, au fur et à mesure.

à te lire pour la suite. :)


soan
 

fanch55

XLDnaute Barbatruc
Bonjour le fil,

@soan :
J'ai d'abord pensé que le fichier que tu avais joint était corrompu ou assez particulier.
Sur Excel 2016 64 bits, j'ai non seulement la même erreur que @KHEROUBI mais de plus Excel se ferme violemment, surtout si on veut faire du débogage .
J'ai essayé de tracer l'erreur qui se produit dès qu'on essaye de mettre à jour la feuill1 ( via ajout ).
Je me suis dit qu'il y avait qq chose de particulier car l'analyse du code me paraissait totalement normal.
Après moult plantages inexplicables même en reconstruisant les feuilles, l'userform et les tables,
je me suis intéressé aux zones nommées : j'ai vu le nom List_Ctr associé à une colonne de la table
Ce nom est par ailleurs en rowsource du combo NC de l'userform.
1607778062043.png

Comme l'erreur survenait dès qu'on tentait de modifier cette table,
j'ai dissocié le nom Liste_Ctr de la table et l'ai associé à un range sur la feuill2 .

Et là, tout fonctionne correctement . 🥳

Je pense donc qu'il faut supprimer ce nom et mettre ceci dans l'userform :
VB:
Private Sub UserForm_Activate()
    NC.List = ActiveSheet.Range("Contrats[N°" & Chr(10) & "contrat]").Value
End Sub
 

KHEROUBI

XLDnaute Junior
Salut fanch55,
J'ai essayé ta requête est sa marche bien. Peut on m'expliquer le problème ici. Alors que je travaille avec Excel 2019, y a t il une incohérence avec la zone de nom "Liste_ctr" et puisqu'elle marche avec SOAN, es ce que le problème est dans la version d'Excel ou autre chose.
Merci les fans
 

soan

XLDnaute Barbatruc
Inactif
Bonjour KHEROUBI, fanch55, sylvanu,

réponse à ton post #6

j'ai saisi les mêmes données que toi ; j'ai cliqué sur le bouton « Ajout »,
et je n'ai pas eu d'erreur :


Image.jpg


nota bene : j'avais saisi « 1000.75 », qui est devenu : « 1 000,75 »

soan
 

soan

XLDnaute Barbatruc
Inactif
j'allais te demander d'envoyer ton fichier pour faire une vérification, mais j'ai compris
ce qui ne va pas ; regarde la cellule C3 : « N° contrat » ; c'est sur 2 lignes car j'ai fait
Alt Entrée pour passer à la ligne suivante dans la même cellule ; d'habitude, ça ne
pose pas de problème ; mais du coup, je crois que ça gêne pour la référence du nom
défini Liste_ctr ; va sur C3 ; efface le contenu avec la touche Suppression, puis
sans utiliser Alt Entrée, saisis "N° contrat" avec juste un espace entre « ° » et « c » ;
recommence tes tests ; si tout est ok, parfait ! 😊 sinon, si ça refait la même erreur,
c'est qu'elle était due à autre chose ; mais quoi ? il me faudra alors ton fichier pour
pouvoir y regarder de plus près.


soan
 

soan

XLDnaute Barbatruc
Inactif
@fanch55

merci pour tes 2 interventions sur ce sujet, et pour ton analyse ; tu as écrit que tu as
Excel 2016 64 bits ; j'ai Office en version 32 bits, dont Excel 2007 ; @patricktoulon
(salut !) est l'un des spécialistes des versions 64 bits et pourra sûrement répondre à
ce genre de problème ; moi, je connais que ma version 32 bits d'Office 2007.

KHEROUBI a écrit qu'il a Excel 2019, mais j'sais pas s'il a Office 2019 64 bits
ou Office 2019 32 bits.


soan
 

soan

XLDnaute Barbatruc
Inactif
Bonsoir @fanch55, @KHEROUBI, @patricktoulon, @Staple1600,

dans ton post #7, tu as écrit :

« Sur Excel 2016 64 bits, j'ai non seulement la même erreur que @KHEROUBI
mais de plus Excel se ferme violemment, surtout si on veut faire du débogage. »


Image.jpg


peut-être que les versions ultérieures à 2007 sont devenues « plus sensibles »
par rapport au Alt Entrée ? peut-être que c'est coupé en haut aussi ? et que
c'est ça qui cause la brusque fermeture d'Excel ?

si c'est ça : enlever le Alt Entrée (ça sera moins bien présenté, mais tant pis ! mieux vaut ça
qu'une brusque fermeture !)
; si ce n'est pas ça, je ne vois que ces 2 explications :

a) c'est dû à une différence entre les versions 64 bits d'Office et les versions 32 bits

b)
c'est dû à une différence entre les interfaces MDI et SDI ; plus d'infos ici :

Interface monodocument dans Excel

je n'ai rien d'autre à proposer au sujet de l'erreur et de la brusque fermeture d'Excel ;
rappel : sur mon PC avec Windows 7 et Excel 2007, ça marche très bien ! 😊


--------------------------------------------------------------------------------------------

d'un autre côté, @fanch55 a aussi écrit :
«
j'ai dissocié le nom Liste_Ctr de la table et l'ai associé à un range sur la feuill2.

Et là, tout fonctionne correctement. 🥳
»
👍👍👍

soan
 
Dernière édition:

KHEROUBI

XLDnaute Junior
salut
Je Vous remercie pour vos interventions, je vais choisir la solution de fanch55 puisque il y a un problème avec le tableau "liste_ctr", car quand je supprime la deuxième ligne de la liste "EURL LA ROUTE" et je fais l'ajout, elle ajoute normalement, mais après c 'est le même problème. pour l'office j'ai l'office 2019 64 bits.
 

Discussions similaires

Statistiques des forums

Discussions
312 232
Messages
2 086 461
Membres
103 220
dernier inscrit
samira2024