Renvoyer dans une cellule la valuer d'une TextBox en fonction d'une ComboBox

Yaloo

XLDnaute Barbatruc
Re : Renvoyer dans une cellule la valuer d'une TextBox en fonction d'une ComboBox

Bonsoir Steve,

Dans mon post#99, le code est à insérer dans ta macro Private Sub VALIDER_Click()

A+

Martial
 

SSteve

XLDnaute Junior
Re : Renvoyer dans une cellule la valuer d'une TextBox en fonction d'une ComboBox

après le remplissage du CR ?
 

Yaloo

XLDnaute Barbatruc
Re : Renvoyer dans une cellule la valuer d'une TextBox en fonction d'une ComboBox

Je te remets le fichier avec le code inséré dans la macro.

A+
 

Fichiers joints

SSteve

XLDnaute Junior
Re : Renvoyer dans une cellule la valuer d'une TextBox en fonction d'une ComboBox

Martial,

Tu trouveras en annexe le projet mis à jour étant donnée que je pense qu'il est mature pour être épourvé !

Merci encore de cet accompagnement et de ton soutient !

:cool: ;)
 

Fichiers joints

Yaloo

XLDnaute Barbatruc
Re : Renvoyer dans une cellule la valuer d'une TextBox en fonction d'une ComboBox

Re,

Ca, c'était ton premier post, il y a 15 jours. :rolleyes:
Je suis plus que novice en VBA et j'essaie de concevoir un petit programme par l'intermédiaire, entre autre, d'un UserForm.
Et celui-ci, c'était il y a quelques minutes :eek:
Martial,

Tu trouveras en annexe le projet mis à jour étant donnée que je pense qu'il est mature pour être épourvé !

Merci encore de cet accompagnement et de ton soutient !

:cool: ;)
Ca fait plaisir de voir, une centaine de post plus tard, ton fichier abouti.

Au plaisir de te revoir sur le forum :cool:.

Martial
 

Yaloo

XLDnaute Barbatruc
Re : Renvoyer dans une cellule la valuer d'une TextBox en fonction d'une ComboBox

Re,

Tu n'utilises pas la mise du mail dans une cellule pour la liste de diffusion ?
 

SSteve

XLDnaute Junior
Re : Renvoyer dans une cellule la valuer d'une TextBox en fonction d'une ComboBox

Lol !!!

Si mais durant le nettoyage du fichier, j'ai trop nettoyé !!! :confused:

Revoici le fichier corrigé... :)

La réussite de ce projet et ma formation en accéleré est pricnipalement grace à toi !!!

Merci encore (jamais trop vu la tache à accomplir.... :) )

Steve
 

Fichiers joints

Yaloo

XLDnaute Barbatruc
Re : Renvoyer dans une cellule la valuer d'une TextBox en fonction d'une ComboBox

Tu as trouvé le moyen pour envoyer par mail ?

Pourquoi tu as écrit Liste.Save : Liste.Close ---> Tu enregistres ta liste dans un autre fichier ? (Je suis curieux, hein :eek:)
 

SSteve

XLDnaute Junior
Re : Renvoyer dans une cellule la valuer d'une TextBox en fonction d'une ComboBox

Bonsoir à tous, Bonsior Martial,

re LOL !!! Un oubli... c'était l'enregistrement de la liste de diffusion que j'avais tenté de mettre en place avant ton code, en vain.

Et j'ai oublié de l'enlevé...

En fait, j'ai deux version de ce code :
- une version avec OS
- une version sans OS

La version sans OS n'avait pas cet oubli...

Voilu ;)
 

SSteve

XLDnaute Junior
Re : Renvoyer dans une cellule la valuer d'une TextBox en fonction d'une ComboBox

Martial, bonjour,

Je reviens te demander un ptit coup de main sur la dernière version réalisée : lorsque je réalise une situation normalement dans le formulaire situation, je demande la modification conditionnée de police de caractère (cellule A21/D21) en l'occurence si dans la cellule G21 dans l'aquelle je copie une cellule d'un ature tableau, si celle-ci donc est remplie les caractères de la cellule A 21 ne sont plus rayés mais ceux de la cellule D21 le sont.

Or que je remplisse ou pas la condition, la mis en forme est identique...

y aurait-il une mauvaise écriture du code qui ne permette pas de vérifier la condition ?

Merci de ton aide...
 

Fichiers joints

Yaloo

XLDnaute Barbatruc
Re : Renvoyer dans une cellule la valuer d'une TextBox en fonction d'une ComboBox

Bonjour Steve,

C'est normal, il faut que tes données, celle que tu cherches et celle qui est dans la cellule, soient exactement identique, majuscule ou minuscule.

Pour éviter ça, tu peut utiliser UCase comme ceci :
If UCase(.[G21].Value) = "CB"
Ca c'était le premier point, le deuxième, lorsque tu écris
qu'est-ce que ça veut dire ? en gros : rien, car tu ne mets pas de = ou de Select ou de Font etc...

Ensuite quand tu mets ceci,
With .[A21].Font
.Strikethrough = False
End With
.[D21]
With .[D21].Font
.Strikethrough = True
End With
C'est pareil, Avec la cellule A21 la police est rayée Faux et la cellule D21 la police est rayée Vrai.

Personnellement, je pense que tu n'as pas besoin d'écrire en G21 "CB" donc tu peux te servir de la donnée qui se trouve dans ta feuille SITUATION, et écrire ceci :

VB:
'Pour la feuille SITUATION de Base.xlsm, si la cellule K de la ligne est égale à CB, en majuscule
If UCase(WkB.Sheets(4).Range("K" & i)) = "CB" Then
  'Alors A21 n'est pas rayée et D21 est rayée
  .[A21].Font.Strikethrough = False
  .[D21].Font.Strikethrough = True
'Si la cellule K de la ligne est égale à ???
ElseIf WkB.Sheets(4).Range("K" & i).Value = "???" Then
  'Alors A21 est rayée et D21 n'est pas rayée
  .[A21].Font.Strikethrough = True
  .[D21].Font.Strikethrough = False
'Sinon (tous ls autres cas)
Else
  'Les 2 cellules sont rayées
  .[A21].Font.Strikethrough = True
  .[D21].Font.Strikethrough = True
End If
Si tu as besoin de remplir ta cellule G21, autant s'en servir, alors tu peux écrire comme ça :

VB:
'Si la cellule G21 est égale à CB, en majuscule
If UCase(.[G21]) = "CB" Then
  'Alors A21 n'est pas rayée et D21 est rayée
  .[A21].Font.Strikethrough = False
  .[D21].Font.Strikethrough = True
'Si la cellule G21 est égale à ???
ElseIf UCase(.[G21]) = "???" Then
  'Alors A21 est rayée et D21 n'est pas rayée
  .[A21].Font.Strikethrough = True
  .[D21].Font.Strikethrough = False
'Sinon (tous ls autres cas)
Else
  'Les 2 cellules sont rayées
  .[A21].Font.Strikethrough = True
  .[D21].Font.Strikethrough = True
End If
A te relire

Martial
 

SSteve

XLDnaute Junior
Re : Renvoyer dans une cellule la valuer d'une TextBox en fonction d'une ComboBox

Martial, bonsoir,

Avec beaucoup de retard, merci de ton précédent retour que je viens tout juste de tester !

Je me retrouve avec un problème non identifié dans la procédure 'SITUATION' :

Normalement :

lorsque j'édite une première situation, il n'y a pas de situation précédente. De ce fait, les cellulles F23 à F28 restent vides.

A partir de la deuxième situation, quand il y en a plus d'une, la cellule F23 doit être renseignée par le montant HT (J30) de la situation précédente.

Mes problèmes sont que :
- dans notre cas, la case F23 est renseignée dès la première situation par un chiffre (?)
- la deuxième situation se retrouve alors avec un chiffre d'origine que je n'arrive pas à comprendre non plus...

Merci de ton aide sur ce point.

Sinon tout semble fonctionner correctement !

Steve
 
Dernière édition:

Yaloo

XLDnaute Barbatruc
Re : Renvoyer dans une cellule la valuer d'une TextBox en fonction d'une ComboBox

Bonjour Steve,

Difficile de s'y remettre après un délai d'un mois.

Normalement :

lorsque j'édite une première situation, il n'y a pas de situation précédente. De ce fait, les cellulles F23 à F28 restent vides.

A partir de la deuxième situation, quand il y en a plus d'une, la cellule F23 doit être renseignée par le montant HT (J30) de la situation précédente.
Je ne comprends pas, normalement dans la colonne F (de la feuille Situation) il s'agit d'acompte et non de situation. Les montants d'acompte sont pris dans ta base, feuille 4 de la colonne E à J

Sinon ça doit se trouver dans cette partie de la macro :
VB:
'Détermine la ligne de copie
      i = Lots.ListIndex + 8
      ' Enregistrement des données
          With WkS.ActiveSheet
            .[H3] = WkB.Sheets(4).Range("A" & i)
            .[H4] = Lots
            .[F7] = Val(Right(NomFeuille, 2))
            .[J9] = WkB.Sheets(2).[U2]
            .[F10] = WkB.Sheets(2).Range("M" & i)
            .[F11] = WkB.Sheets(2).Range("N" & i)
            .[F12] = WkB.Sheets(2).Range("O" & i)
            .[F13] = WkB.Sheets(2).Range("P" & i)
            .[F14] = WkB.Sheets(2).Range("Q" & i)
            .[F15] = WkB.Sheets(2).Range("R" & i)
            .[E18] = Val(Pourcentage.Value) / 100
            .[G21] = WkB.Sheets(4).Range("K" & i)
            .[F23] = WkB.Sheets(4).Range("E" & i)
            .[F24] = WkB.Sheets(4).Range("F" & i)
            .[F25] = WkB.Sheets(4).Range("G" & i)
            .[F26] = WkB.Sheets(4).Range("H" & i)
            .[F27] = WkB.Sheets(4).Range("I" & i)
            .[F28] = WkB.Sheets(4).Range("J" & i)
A partir de .[F23] = etc...

A te relire

Martial
 

SSteve

XLDnaute Junior
Re : Renvoyer dans une cellule la valuer d'une TextBox en fonction d'une ComboBox

Martial bonsoir,

Mes déplacements intempestifs rendent difficile mon assiduité...

En fait, un acompte est une situation. Mais lors de ta première situation, tu n'as pas reçu d'acompte, et le code n'en tenait pas compte...

J'ai réussi à solutionner ce problème en inversant l'ordre d'exécution du code :

je renseigne d'abord le classeur 'SITUATION' et ensuite le tableau du classeur 'BASE'.

Par contre je rencontre un autre soucis :

le montant de la situation n'est pas égale au montant du marché multiplié par le pourcentage : il faut déduire le compte prorata (quand il y en a un) et la retenue de garantie (quant il y en a une)...

Merci de ton aide...
 
Dernière édition:

Yaloo

XLDnaute Barbatruc
Re : Renvoyer dans une cellule la valuer d'une TextBox en fonction d'une ComboBox

Bonjour Steve,

C'est un peu compliqué, car dans les derniers exemples que tu nous mets, il n'y a pas de données. Donc difficile de s'y retrouver.

Peut-être avec quelque chose comme ça (à mettre à la fin de l'envoi de tes valeurs dans la feuille) :

VB:
.[F27] = WkB.Sheets(4).Range("I" & i)
.[F28] = WkB.Sheets(4).Range("J" & i)
VoirOuTuMetsCetteDonnée = (MontantHT * Pourcentage / 100) - IIf(.[J20].Value = "", 0, .[J20].Value) - IIf(IsNumeric(.[J21].Value), .[J21].Value)
Ou alors, dans ta feuille nouvellement créée, as-tu cette donnée, puisque tu as plusieurs cellules avec des formules. Tu peux dans ce cas-là la récupérer directement.

Sinon, essaies de nous mettre quelques exemples dans tes classeurs.

A+

Martial
 

SSteve

XLDnaute Junior
Re : Renvoyer dans une cellule la valuer d'une TextBox en fonction d'une ComboBox

Martial, bonjour,

En annexe les documents renseignés.

J'ai repéré un nouveau problème mais toujours sur la même procédure :

Dans mon exemple :

1er pb :
les cases F10 et F11 du lot PEINTURE auraient du être renseignées d'un montant respectivement de 1500 et 800 €.
De même pour le lot VRD pour la case F10 pour un montant de 15 000 €.
=> je ne comprends pas l'origine de ce point

2e pb précédemment énoncé :
le montant indiqué dans les cases F23, F24, F24, etc sont des montants bruts avant déduction du compte prorata et de la retenue de garantie quant l'un et l'autre sont indiqués.
=> étant donné que le code renseigne d'abord le classeur 'SITUATIONS' et ensuite la feuille 'SITUATIONS' du classeur 'BASE' il faudrait peut-être 'simplement' renvoyer le montant de la cellule J30 de la feuille traitée du classeur 'SITUATIONS'.

Comme le code renvoi, à chaque fois, les valeurs renseignées dans le classeur 'BASE' ... ?
 

Fichiers joints

SSteve

XLDnaute Junior
Re : Renvoyer dans une cellule la valuer d'une TextBox en fonction d'une ComboBox

J'ai modifié ces 2 points et les ai résolu !!!

Merci quand même !!!

Steve
 
Dernière édition:

Yaloo

XLDnaute Barbatruc
Re : Renvoyer dans une cellule la valuer d'une TextBox en fonction d'une ComboBox

Salut Steve,

C'est normal, tu prends le même i
'Détermine la ligne de copie
i = Lots.ListIndex + 8
Alors que lorsque tu copies des données de 2 feuilles différentes, les lignes ne sont pas la même.

Soit tu écris :
i = Lots.ListIndex + 1
...
.[J9] = WkB.Sheets(4).Range("D" & i + 7)
...
.[F11] = WkB.Sheets(2).Range("N" & i)
...

Ou alors, mais c'est pas très logique :
i = Lots.ListIndex + 8
...
.[J9] = WkB.Sheets(4).Range("D" & i)
...
.[F11] = WkB.Sheets(2).Range("N" & i - 8)
...

A+

Martial

Edit : On n'est arrivé à la même déduction.
 
Dernière édition:

SSteve

XLDnaute Junior
Re : Renvoyer dans une cellule la valuer d'une TextBox en fonction d'une ComboBox

Martial bonsoir,

J'aurais encore besoin de tes lumières :

En essayant le code sur mon ordi je n'ai aucun problème. Mais voila, c'est que j'utilise le code depuis plusieurs bécanes toutes en cloud et donc le path du dossier change avec le nom de la session.

J'ai réglé le problème en VBA (Google est mon ami) mais je n'arrive pas à régler les références de cellule d'un fichier sur des cellules d'un autre fichier excel dans un sous répertoire du même dossier.

type :
'='C:\Users\steve\CloudStation\CLIENTS\NORAUTO\Nantes\Dossier Nantes avec OS\$\[Base.xlsm]LOTS'!$E$30'

Il s'agit, si j'ai tout compris, de référence relative et absolue mais lié à des liens croisés).

J'ai trouvé dans le cas de cellule dans un même fichier mais pas quant on renvoie à un autre fichier...

Merci de ton aide.

(Je ne sais pas si j'ai été clair...?)

Steve
 

Discussions similaires


Haut Bas