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

Salut Steve, bonjour à tous,

Concernant le point 2 du post#56, peut-être un idée ici

A+

Martial
 

SSteve

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

Bonsoir Martial, bonsoir à tous,

Je te remercie pour ton dernier post mais je ne comprends pas le classeur indique des erreures aléatoires ??? un reboot et plus rien ?

J'ai de façon récurente un problème d'initialisation de la liste 'Lots' de la feuille 9 SUIVI SITUATION.

Merci de ton aide.
 

Fichiers joints

Dernière édition:

Yaloo

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

Salut Steve,

Moi aussi j'ai eu des problèmes d'erreurs, ça vient de la fonction Ouvert, mais je viens de vérifier avec le fichier de ton post précédent et ça fonctionne correctement. Donc je ne sais plus quoi penser.
Si ça continue, on changera cette partie là de la procédure.

Pour ton calcul de pourcentage, en soit ce n'est pas très complexe, il suffit de mettre
VB:
' Copie du % dans la case Avenant correspondante
 
 Feuil8.Cells(Lots.ListIndex + 8, 3) = Pourcentage.Value / 100
 Feuil8.Cells(Lots.ListIndex + 8, 3).NumberFormat = "0%"


' renseignement du montant de la situation
  
 MontantHT = Feuil8.Cells(Lots.ListIndex + 8, 4)
 
 d = Feuil8.Cells(Lots.ListIndex + 8, 6).End(xlToLeft).Column + 1
  If d < 5 Then d = 5
 Feuil8.Cells(Lots.ListIndex + 8, d).Formula = MontantHT * Pourcentage / 100
Et surtout, enlever

VB:
Private Sub Pourcentage_Exit(ByVal Cancel As MSForms.ReturnBoolean)
Pourcentage.Value = Format(Pourcentage.Value / 100, "0%")
End Sub
Ca fait le bon calcul, par contre, le problème vient du fait qu'il faut ajouter le % aux % précédents lorsqu'il ne s'agit pas du premier avenant.

Je suis trop crevé pour le faire ce soir, on verra demain.

A+

Martial

PS : Pour éviter que ça plante, tu supprimes la ligne
If Not Ouvert("SITUATIONS.xlsx") Then et le End If qui va avec.
 

SSteve

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

Bonsoir Martial, bonsoir à tous,

c'est une fois de plus génial !!! cela a effectivement résolu plusieurs soucis...

Etape complémentaire : je souhaite, quand on rempli le formulaire 'renseignement' que ca me remplisse un tableau 'CR de Chantier' (en annexe).

A chaque fois qu'un lot est renseigné, l'ensemble des données (Lot, nom, prénom, adresse, @) se retrouvent à la suite d'une case à l'autre (Lignes 44 à 50).

Cela implique que l'on complète le formulaire avec une demande de renseignement du mail...

Est-il possible aussi de renseigner (créer au premier lot) une liste de diffusion que l'on appelerait du nom du chantier, classeur 'Base' - feuille 'LOTS' - cellule 'B30'

merci de ton aide !

Je suis presque au bout...
 
Dernière édition:

Yaloo

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

Bonsoir Steve,

Pour en revenir à la fin de mon message post #63, tu as pu modifier et ajouter le pourcentage d'avancement si un pourcentage avait déjà été enregistré ?

Pour le mail, tu peux utiliser InputBox, recherche de l'aide dans VBA pour plus d'information.

Pour ton post précédent, pour le renseignement des nom et adresse, il suffit de faire une boucle, du style (pas testé mais ça devrait le faire) :
VB:
Sub Adresse()
Dim i& 'Colonne pour la 1ere feuille = Ligne pour la 2ème feuille
Dim Mail$
For i = 1 To 5 'En fonction du nb de cellule à traiter
  'Admettons que l'on veuille copier les données de la ligne 8 de la feuille 1
  'Dans la colonne 5 de la feuille 2
  Feuil2.Cells(i, 5) = Feuil1.Cells(8, i)
Next i
Mail = InputBox("Merci de renseigner une adresse mail", "Adresse mail")
Feuil2.Cells(6, 5) = Mail
End Sub
Rien ne t'empêche de mettre une variable à la place de la ligne 8, cela peut être la dernière ligne.

Pour le dernier point (toujours pas testé mais ça devrait toujours le faire) :
VB:
Dim NomFichier$
NomFichier = ThisWorkbook.Path & ThisWorkbook.Name & " " & ActiveSheet.Name & " " & [B30]
ActiveWorkbook.SaveAs NomFichier
A te relire

Martial
 

SSteve

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

Merci Martial !
En fait, je ne renseigne pas un pourcentage 'tronçonné' de facturation (cette fois ci on facture 30%, cette fois là on ne fai tque 15 %). Le pourcentage représente un % d'avancement de chantier ce qui permet de remplacer l'ancien % directement...

Je me demande si je n'ai pas loupé quelquechose ???

non, je ne pense pas ...?? ! ?:confused:
 

Yaloo

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

Re,

Pour moi, le 1er avancement 15%, ensuite le deuxième 15% ce qui fait 30% donc 30% d'avancement, puis 3 ème 20% total 50 %, on est donc à la moitié des paiements.

Mais chacun à ses habitudes et façons de faire.

A+

Martial
 

SSteve

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

Je ne saisi pas le fonctionnement de ce code ?


VB:
Sub Adresse()
Dim i& 'Colonne pour la 1ere feuille = Ligne pour la 2ème feuille
Dim Mail$
For i = 1 To 5 'En fonction du nb de cellule à traiter
  'Admettons que l'on veuille copier les données de la ligne 8 de la feuille 1
  'Dans la colonne 5 de la feuille 2
  Feuil2.Cells(i, 5) = Feuil1.Cells(8, i)
Next i
Mail = InputBox("Merci de renseigner une adresse mail", "Adresse mail")
Feuil2.Cells(6, 5) = Mail
End Sub
l
 

SSteve

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

En fait, non.
L'avancement se déroule par rapport à une échelle temps qui est définie par le planning du début de chantier.
Ce qui permet d'informer le client de l'état d'avancement de son chantier.:)
 

Yaloo

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

Re,

Autant pour moi, je n'avais pas remarqué que les données dans les colonnes ne se suivaient pas.

Je ne saisi pas le fonctionnement de ce code ?
Voici un fichier, pour simplifier j'ai tout mis dans le même fichier.

Il suffit d'adapter avec le nom des classeurs.

La macro se trouve dans le module1

Tant que l'on a pas mis une adresse mail correcte, on ne peut pas passer à la copie des données.

A+

Martial

Edit : Modif fichier car données confidentielles.
 

Fichiers joints

Dernière édition:

SSteve

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

Bonsoir Martial, bonsoir à tous,

Voici en annexe le fichier avec une tentative de code.

J'ai intégré dans le formulaire 'Renseignement' la demande de mail.

En fait, ce que je cherche à faire ,c'est copier les cellule A45:I50 et de les inserer dans la cellule A51 à chaque UserForm 'Renseignement' validé.

Ensuite, on copie le 'Lot' en A52, le nom de l'entreprise en B51, le nom de l'entrepreneur en B52, etc.. et ainsi de suite à chaque formulaire.

et je bloque...

Ensuite je collecte à chaque validation, le mail de l'entreprise que j'ajoute à une liste d'envoi intitulée du nom du chantier...

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

Yaloo

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

Bonsoir Steve,

C'est un peu confus :confused:

J'ai intégré dans le formulaire 'Renseignement' la demande de mail.
Ok ça j'ai vu

En fait, ce que je cherche à faire ,c'est copier les cellule A45:I50 et de les inserer dans la cellule A51 à chaque UserForm 'Renseignement' validé.
Tu veux mettre 45 cellules dans une seule ? Il s'agit de FL1.Cells(i, 1).Value = R ?

Ensuite, on copie le 'Lot' en A52, le nom de l'entreprise en B51, le nom de l'entrepreneur en B52, etc.. et ainsi de suite à chaque formulaire.
Désolé, je suis largué...je ne comprends dans quelle feuille tu te trouves et que viennent faire les A52 B51 car même dans ta feuille CR, les lignes 51 et 52 ne sont pas renseignées.

et je bloque...
Sur quoi ? précisément ? :confused:

Ensuite je collecte à chaque validation, le mail de l'entreprise que j'ajoute à une liste d'envoi intitulée du nom du chantier...
Je n'ai rien trouvé dans la macro qui ressemble à ça....:(

Pourrais-tu être plus clair ? Ce n'est pas évident de ne communiquer que par clavier interposé. D'autant que toi, tu sais ce que tu veux faire, les XLnautes pas du tout.

Pour éviter toutes polémiques, je ne dit pas ça méchamment mais amicalement, afin de pouvoir te venir en aide.

A te relire

Martial
 

SSteve

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

LOL... je suis si peu compréhensif... désolé...

Je te joins le classeur BASE modifié quelque peu...

J'ai changé un peu d'approche et tu pourras (peut être) comprendre... :

Lorsque le classeur s'ouvre, je choisis l'option 'remplir une fiche'. Je renseigne la fiche complète qui va enregistrer les infos dans la feuille 'définition' du meme classeur.
Ensuite, le code ouvre le classeur 'OS' pour créer une feuille au nom du 'Lots' et un numéro incrémenté.

Par la suite, je voudrais que le code ouvre le classeur 'CR', remplisse le premier 'cadre' préformaté vide dans la feuille 1. Pour la simplicité du code j'ai mis la feuille 1 dans le classeur 'BASE et l'ai appelé 'CR'.

Et à chaque fois que je rempli un nouveau formulaire, le code me remplit le cadre suivant.

Enfin, je voudrais créer une liste de diffusion OUTLOOK constitué de l'ensemble des adresses mails rentrés dans le code.
J'espère avaoir pu être un peu plus clair... ??
 

Fichiers joints

SSteve

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

a propos, j'ai laissé apparament par erreur des infos 'perso' dans un des tableaux : si tu pouvais les retirer SVP
Merci
 

Yaloo

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

Re,

Perso, je n'ai pas vu de données confidentielles. Il y a bien M. DUPONT mais est-ce confidentielle :confused: Dis-moi dans quel fichier et je m'empresse de les supprimer.

Bon, c'est plus clair, mais je verrai ça demain.

A+
 

SSteve

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

Martial, bonjour,
Bonjour à tous...

Voici une nouvelle mouture mais j'ai continuellement des erreurs aléatoires que je ne comprends.

Parfois sur la méthode RANGE, parfois un code 1004...

comprend pas tout... :(
 

Fichiers joints

Dernière édition:

Yaloo

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

Bonjour Steve, le forum,

Une piste peut-être pour les erreurs (mais pas testé) :
VB:
Workbooks.Open ThisWorkbook.Path & "\3-SUIVI\CR\CR.xlsx"
    Set WkCR = ActiveWorkbook
  
    Dim FL2 As Worksheet

        Set FL2 = Worksheets(1)
        i = FL2.Range("B65536").End(xlUp).Row + 1
            Dim j&

            FL2.Cells(j + 1, 1).Value = Lots
            FL2.Cells(j, 2).Value = WkB.Sheets(2).Range("B" & i)
            FL2.Cells(j + 1, 2).Value = WkB.Sheets(2).Range("B" & i)
            FL2.Cells(j + 2, 2).Value = WkB.Sheets(2).Range("E" & i)
            FL2.Cells(j + 3, 2).Value = WkB.Sheets(2).Range("F" & i)
            FL2.Cells(j + 4, 2).Value = WkB.Sheets(2).Range("G" & i) & WkB.Sheets(2).Range("H" & i)
            FL2.Cells(j + 6, 2).Value = WkB.Sheets(2).Range("T" & i)
            FL2.Cells(j + 6, 4).Value = "M." & WkB.Sheets(2).Range("D" & i)
Il me semble qu'il y a plantage, car tu prends la dernière (i) de la feuille FL2 et tu mets FL2.Cells(j, 2).Value = WkB.Sheets(2).Range("B" & i) , soit tu prends (i) dans WkB.Sheets(2) soit tu mets FL2.cells(i,2).Value. De plus j n'est pas définit.
Je n'ai pas encore testé car je reprends le boulot à 14h00 et je n'ai pas trop de temps. Comme tu te trouves dans l'UserForm tu devrais récupérer les données directement dans celui-ci avec les TextBox (toujours pas testé ce que tu fais exactement).

Pour trouver la dernière série de données dans ton fichier CR. Puisque ta ligne a l'air d'être j
VB:
Dim d&, j&, k&
k = Cells(Rows.Count, 2).End(xlUp).Row
d = Application.RoundUp((k - 44) / 6, 0)
j = 45 + d * 6
La même chose mais en une seule ligne
VB:
j = 45 + (Application.RoundUp(((Cells(Rows.Count, 2).End(xlUp).Row) - 44) / 6, 0)) * 6
Ce soir, je testerai si tu ne l'as pas encore fait.

A+

Martial
 

SSteve

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

Bonsoir Martial, bonsoir le forum,

j'ai testé ton code : ca a marché la première fois mais j'avais mal calibré les cases de destinations : c'était décalé.

J'ai recadré et depuis : erreur 1004... :(
 

Fichiers joints

Yaloo

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

Bonjour Steve,

Il s'agit de quelle macro, car j'ai l'impression que c'est un ancien fichier.

Si c'est pour la macro CR, ce n'est pas celle que je t'ai modifié et les cellules dans CR sont toujours aux mêmes emplacements.

A+

Martial
 

SSteve

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

Bonjour à tous, Martial,

Le code fonctionne mais je me retrouve avec deux soucis :

- on obtient une erreur au niveau du vidage du ComboBox 'erreur 380 Impossible de définir la propriété Text. Valeurde propriété non valide'. Le vidage des TextBox se déroule bien et cette appel fonctionnait très bien jusqu'à présent ???

- Lorsque le code renseigne les cellules de la feuille 'CR' il intercalle des lignes vides que je ne comprends pas ?

Set FL2 = Worksheets(1)
j = FL2.Range("B65536").End(xlUp).Row + 1


FL2.Cells(j + 1, 1).Value = Lots
FL2.Cells(j, 2).Value = WkB.Sheets(2).Range("B" & i)
FL2.Cells(j + 2, 2).Value = WkB.Sheets(2).Range("E" & i)
FL2.Cells(j + 3, 2).Value = WkB.Sheets(2).Range("F" & i)
FL2.Cells(j + 4, 2).Value = WkB.Sheets(2).Range("H" & i) & " " & WkB.Sheets(2).Range("I" & i)
FL2.Cells(j + 5, 2).Value = WkB.Sheets(2).Range("T" & i)
FL2.Cells(j + 5, 4).Value = "M." & WkB.Sheets(2).Range("D" & i)
Enfin, je réalise que quand une entreprise a plusieurs 'LOTS', il ne faut pas lui faire une case spécifique pour ce nouveau lots mais plutôt compléter la case existant avec uniquement le nom du LOT, colonne A.
 

Fichiers joints

Discussions similaires


Haut Bas