Mettre les cellules d'une ligne dans un tableau
re
je répond à vos questions:
pourquoi vous faites des changements de couleur ??
tout simplement pour attirer l'attention sur le nom de l'entreprise et que ce soit bien celui-ci de cette ligne là qu'il faut modifier.
Il éviter les Select et selection dans les codes.
il faut donc mettre des activate ?
Il vaut mieux avoir de petits codes que vous appelez entre eux.
Si j'ai bien compris vos propos, mes compétences en vba ne me permettent pas cette réalisation;
Mon conseil actuellement est d'oublier votre code
OK
mettez une cellule pour le code client dans le formulaire
Je me penche dessus et vous soumettrais ma trouvaille.
vous utilisez le formulaire pour ajouter de nouvelle ligne.
Non. C'est lorsque je clique sur AJOUTER UNE FACTURE que j'insère une ligne.
vous utilisez le formulaire pour modifier une ligne existante. Le bouton Modification sert à cela actuellement
Oui.
je voudrais savoir à quoi vous servent les colonnes U et V
Pour la colonne U, je pensais en avoir besoin dans mon TCD. Mais il s'avéré que NON.
En ce qui concerne la colonne V c'est cette forme de calcul que j'intègre dans le TCD et qui me donne le montant général du montant H.T. et du prévisionnel.
Ce sont les cellules rouges qui sont toujours apparentes par l'intermédiaire du FIGER LES VOLETS.
Sans cette formule le total général ne pourrait se voir qu'en bas de page. Avec la formule de la colonne V le total général est toujours visible en haut du tableau.
Ci-joint le lien d'explication:
https://www.youtube.com/watch?v=nSCnahNaqRU
Je ne comprends pas la colonne i qui renseigne un + sachant que la colonne J mentionne le montant positif ou négatif
Comme dirait ma femme "ça c'est bien de toi".
J'ai toujours peur que ce ne soit pas assez visible, alors je rajoute un + ou un -
Colonne J vous complétez manuellement
non.
automatique.
Mais il est préférable de regarder cette formule le jour ou vous serez très fatigué.
MDR
Elle se situe en ("H100:AI100") dans la feuille FORMULAIRE.
Colonne A, mettez N° client en A3 ou Num client
N°
Voilà, je pense ne rien avoir oublié.
Bonne réception.
Cordialement.
re
Au click du bouton, cela active le formulaire et vous choisissez le client dans la liste déroulante en F6
Le problème c'est que j'ai ou je peux avoir plusieurs fois le même nom.
vous utilisez uniquement le code que je vous ai donné qui remplit directement le formulaire et active la feuille
ok, je valide pour cette solution.
re
j'ai rajouté deux lignes au tableau formulaire ce qui fait que j'ai :
En D38 N° LIGNE ENTREPRISE
En F38 une case blanche et vide.
Dans feuille ACCUEIL si je clique sur bouton MODIFICATION LIGNE ENTREPRISE, en début de macro je rajoute:
Rows("37:38").Activate
Selection.EntireRow.Hidden = False
pour faire apparaitre ces deux lignes
et lorsque j'enregistre et efface nouvelle saisie facture travaux (bouton noir) à la fin de la macro, j'incorpore
Rows("37:38").Activate
Selection.EntireRow.Hidden = True
de façon à masquer ces deux lignes qui ne me serviront pas pour la prochaine saisie de facture étant donné que je ne connais pas l'emplacement que prendra ce nouveau client dans la feuille d'accueil puisque celui-ci sera classé par ordre alphabétique.
Est ce que cela vous convient?
Bonne réception.
Re
Oulà là il y a pas mal de choses là.... je sens que l'on va se perdre....
Je vais commencer par votre dernier post
j'ai rajouté deux lignes au tableau formulaire ce qui fait que j'ai :
En D38 N° LIGNE ENTREPRISE
En F38 une case blanche et vide.
J'ai fait mais le titre en D38 est lequel. Cela vient de A3 de la feuille Accueil. Vous avez mis N° entreprise en A3 ?
Dans feuille ACCUEIL si je clique sur bouton MODIFICATION LIGNE ENTREPRISE, en début de macro je rajoute:
Rows("37:38").Activate
Selection.EntireRow.Hidden = False
Cela concerne quel code (le mien ?) C'est pour la feuille Formulaire. Mais pourquoi vous voulez masquer ?
Dans l'idée du code que je vous ai proposé, c'est le N° client que vous mettez dans l'inputbox qui ira dans cette cellule F38.
Pour moi pas besoin de masquer ces lignes.
Par contre vous écrviez n° d'entreprise alors que les entreprises sont dans la colonne C de la feuille Accueil et comme vous avez des doublons, le numéro concerne plutot un N° d'enregistrement
Idéalement comme je vous en ai déjà parlé, le N° en colonne A doit être unique et ne pas se référer à une ligne mais à un numéro. C'est ce numéro qui sert de référence à tout ce que vous faites dans le fichier
En gros comme je vous ai expliqué avant une base de données ne commence pas à 4. Sans quoi on peut se demander où sont les 1 2 et 3
de façon à masquer ces deux lignes qui ne me serviront pas pour la prochaine saisie de facture étant donné que je ne connais pas l'emplacement que prendra ce nouveau client dans la feuille d'accueil puisque celui-ci sera classé par ordre alphabétique.
Là vous me parlez de Saisie prochaine facture alors que le bouton de départ concerne une modification entreprise.
re,
J'ai fait mais le titre en D38 est lequel. Cela vient de A3 de la feuille Accueil. Vous avez mis N° entreprise en A3 ?
Non, je n'ai rien rattaché. j'ai juste insèré une ligne et en D38 j'ai tapé N° entreprise comme j'aurais pu taper une autre désignation. C'est en attente de la suite de votre proposition.
J'ai juste préparé.
Cela concerne quel code (le mien ?)
Oui. Comme dit précédemment j'abandonne le principe de faire clignoter les cellules.
Votre principe de remplir la feuille formulaire en cas de modification, me va à ravir.
c'est le N° client que vous mettez dans l'inputbox qui ira dans cette cellule F38.
Oui, tout à fait d'accord.
Pour moi pas besoin de masquer ces lignes.Dans le cas d'une modification, il ne faut surtout pas, c'est pour cela que j'affiche ces 2 lignes par la macro suivante:
Dans feuille ACCUEIL si je clique sur bouton MODIFICATION LIGNE ENTREPRISE, en début de macro je rajoute:
Rows("37:38").Activate
Selection.EntireRow.Hidden = False
pour faire apparaitre ces deux lignes
Idéalement comme je vous en ai déjà parlé, le N° en colonne A doit être unique et ne pas se référer à une ligne mais à un numéro. C'est ce numéro qui sert de référence à tout ce que vous faites dans le fichier
Je vous ai expliqué pourquoi je partais a 4 en A4. Tout simplement pour pas prendre le n° de ligne comme n° client.
En partant en A4 à 4 le n° de ligne et le numéro de l'entreprise est le même et donc pas de possibilité d'erreur.
Mais sur le fond, je vous suis sur le principe de partir en A4 avec le numéro 1.
Là vous me parlez de Saisie prochaine facture alors que le bouton de départ concerne une modification entreprise.
Tout à fait d'accord.
Cette formule est dans le cas d'une modification
Dans feuille ACCUEIL si je clique sur bouton MODIFICATION LIGNE ENTREPRISE, en début de macro je rajoute:
Rows("37:38").Activate
Selection.EntireRow.Hidden = False
pour faire apparaitre ces deux lignes
Dans ma p'tite tête puisque j'avais les modifications à effectuer sur la feuille formulaire (chose pour l'instant qui fonctionne avec votre macro)
j'effectuais les modifications nécessaires, je supprimais la ligne concernée dans la feuille accueil et je cliquais sur le bouton noir enregistrement comme si cela était une nouvelle saisie.
C'est pour cela que je mettais l'instruction ci-dessous dans la macro ENREGISTRER NOUVELLE SAISIE pour masquer le (" N entreprise ou le texte qui sera rattaché à A3) car lors d'une nouvelle saisie, personnellement, je ne vois pas l'intérêt d'avoir D38 et F38 visible sans rien avoir à remplir.
et lorsque j'enregistre et efface nouvelle saisie facture travaux (bouton noir) à la fin de la macro, j'incorpore
Rows("37:38").Activate
Selection.EntireRow.Hidden = True
de façon à masquer ces deux lignes qui ne me serviront pas pour la prochaine saisie de facture étant donné que je ne connais pas l'emplacement que prendra ce nouveau client dans la feuille d'accueil puisque celui-ci sera classé par ordre alphabétique.
.
Dans la feuille FORMULAIRE, personnellement, je préfère garder le même bouton d'enregistrement soit suite à une modification soit suite à une nouvelle saisie, plutôt que d'avoir un bouton pour enregistrer une nouvelle saisie et un bouton pour valider des modifications éffectuées.
Voila, en espérant que cela est maintenant plus clair pour vous.
Bonne réception.
Bonne soirée.
Cordialement.
Bonjour
Il faut y aller pas à pas pour moi car à la vue du fichier, j'ai vraiment peine à me retrouver dans ce que vous avez fait
En fait en y regardant votre fichier ne sert qu'à enregistrer des factures
La formulaire sert à créer et enregistrer une facture au moment où vous devez la faire. Juste cela ?
1. lignes 37 et 38.
Le plus simple est de toujours les laisser masquées. Comme vous écrivez cela n'a pas d'intérêt puisque l'on ne remplit pas
On sait ce que cela comporte et il ne faut surtout pas aller modifier quelque chose là sachant que c'est cette référence
qui permettra de modifier ou d'ajouter une ligne.
Pour le code on ne mentionne rien à ce sujet
En D38 j'ai placé ceci --> =Tabentreprise[[#En-têtes];[N° ENR]]
Dites moi si ok
2. Bouton Formulaire :
ok pour avoir un bouton avec deux fonctions possibles
Toutefois quel bouton utilisez-vous ? le noir d'après ce que je lis dans votre post ?
Le bouton rouge sera à supprimer donc ?
3. Modification : voici ce que j'ai modifié
- Dans le module MODIF_LIGNE_ENTREPRISE_NUMERO, j'ai désactivé le code MODIFIER UN CLIENT et ajouté le code Sub ACCUEIL_Bouton4_Cliquer().
Vous pourriez d'ailleurs le renommer en MODIFIER UN CLIENT. Votre avis ?
- Dans la feuille FORMULAIRE vous avez placé un code Private Sub Worksheet_Change(ByVal Target As Range). Il faut le supprimer
Ce code ne sert qu'à adapter la largeur de deux colonnes et est activé à chaque fois que vous modifiez quelque chose dans la feuille Formulaire.
Exemple pour le code Modifier client, on remplit 19 cellules avec le code Modifier client --> le code Private Sub Worksheet_Change est exécuté 19 fois !
Le mieux est de faire un code séparé et qui est appelé lorsque vous activez la feuille Formulaire
Le code serait ceci et pourrait être placé dans un module spécifique dédié aux MISES EN FORME
Sub Mise_forme_formulaire()
With Sheets("FORMULAIRE")
.Columns("D:D").AutoFit
.Columns("F:F").AutoFit
End With
End SubDites-moi ?
Si ok reste à faire le code pour la mise à jour de la ligne modifiée via le formulaire
NB : heu pourquoi vous mettez un point derrière dans tous les boutons ??
Bonjour Dan,
La formulaire sert à créer et enregistrer une facture au moment où vous devez la faire. Juste cela ?
Tout à fait.
En D38 j'ai placé ceci --> =Tabentreprise[[#En-têtes];[N° ENR]]
Oui, pourquoi pas!
Le bouton rouge sera à supprimer donc ?
NON.
Il se peut que j'ai, à suivre, deux factures de la même entreprise le même jour mais avec uniquement la colonne F TRAVAUX qui change.
Mon intention est de faire une copie de la macro du bouton noir ENREGISTREMENT ET EFFACER NOUVELLE SAISIE et de la recopier dans le bouton rouge CONSERVER ET ENREGISTRER UNE NOUVELLE FACTURE, de ne pas faire un Sheets("Formulaire").Range("F4:F36").ClearContents mais de remettre uniquement à zéro les cellules F14 PREVISIONNEL et F16 MONTANT H.T. qui eux ne seront systématiquement jamais les mêmes.
De cette façon je n'aurais juste qu'à modifier uniquement la cellule F12 TRAVAUX et resélectionner par l'intermédiaire du menu déroulant ce qui m'intéresse et mettre le montant en F14 (prévisionnel) et F16 (montant h.t).
Je suis obligé de m'absenter une petite heure.
Je ferais le reste des questions à mon retour.
Bonne réception.
Mon intention est de faire une copie de la macro du bouton noir ENREGISTREMENT ET EFFACER NOUVELLE SAISIE et de la recopier dans le bouton rouge CONSERVER ET ENREGISTRER UNE NOUVELLE FACTURE, de ne pas faire un Sheets("Formulaire").Range("F4:F36").ClearContents mais de remettre uniquement à zéro les cellules F14 PREVISIONNEL et F16 MONTANT H.T. qui eux ne seront systématiquement jamais les mêmes.
En gros c'est un dupliquer en fait mais attention dans ce cas car s'il s'agit de faire un nouvelle enregistrement comme je le comprends, il faut effacer F38 pour recréer un nouvel enregistrement
Pour moi, ce n'est pas clair
- sur la feuille Accueil, vous cliquez sur le bouton Modification Ligne : le code modifie uniquement une ligne existante dans la feuille Accueil.
----> Quel est le bouton ? le rouge ou le noir ?
----> ne doit-on pas vider la feuille formulaire une fois la modification effectuée ?
- sur la feuille Accueil, vous cliquez sur le bouton Ajouter facture : le code ajoute une nouvelle ligne.
Si vous voulez faire un dupliquer dans les deux cas, il va falloir réfléchir sur le cas
Re,
De retour.
Dans le module MODIF_LIGNE_ENTREPRISE_NUMERO, j'ai désactivé le code MODIFIER UN CLIENT et ajouté le code Sub ACCUEIL_Bouton4_Cliquer().
Pour mettre votre macro à vous qui recopie les données de la feuille ACCUEIL sur la feuille FORMULAIRE pour effectuer les modifications.
Si oui, pas de problème.
Exemple pour le code Modifier client, on remplit 19 cellules avec le code Modifier client --> le code Private Sub Worksheet_Change est exécuté 19 fois !Exact.
J'avais remarqué que chaque fois que je repassais sur une cellule je revenais sur private sub et que cela ralentissait le déroulement.
J'ai le même problème sur les feuilles VISUALISATION NOM, RUBRIQUE et ACCUEIL.
Mais je ne savais pas faire la macro ci dessous mais SURTOUT, ou l'intégrer.
Sub Mise_forme_formulaire()
With Sheets("FORMULAIRE")
.Columns("D:D").AutoFit
.Columns("F:F").AutoFit
End With
End Sub
Si ok reste à faire le code pour la mise à jour de la ligne modifiée via le formulaire
Pour moi, OK.
NB : heu pourquoi vous mettez un point derrière dans tous les boutons ??
Veille France.
Dans ma jeunesse notre professeur de Français nous obligeait à finir toutes nos phrases ou intitulés par un point.
Comme commencé une phrase toujours par une majuscule.
Depuis je le fais toujours.
Et, je trouve que cela fait joli dans le bouton.
Bonne réception.
Cordialement.
Re
Je vous réponds sur votre post --> https://forum.excel-pratique.com/s/goto/1163185
- Avez-vous placé le code mise en forme dans un module séparé (si oui, quel nom avez-vous donné ?) et supprimé le code dans la feuille formulaire ?
Dans ma jeunesse notre professeur de Français nous obligeait à finir toutes nos phrases ou intitulés par un point.
Comme commencé une phrase toujours par une majuscule
idem pour moi. Mais ....
- Pour les boutons,.... hum vous imaginez Microsoft qui met un point à chaque icone ou bouton dans ses menus.
- Pour les majuscules : Logique mais à éviter dans les codes sur les noms de variables......
Quid pour les points de mon post ici -> https://forum.excel-pratique.com/s/goto/1163157
re votre post de Aujourd'hui à 11:10
En gros c'est un dupliquer en fait mais attention dans ce cas car s'il s'agit de faire un nouvelle enregistrement comme je le comprends
Oui.
il faut effacer F38 pour recréer un nouvel enregistrement
Oui. Tout à fait puisque le nouvel enregistrement sera classé par ordre alphabétique donc pas la possibilité de connaitre son numéro à la saisie.
sur la feuille Accueil, vous cliquez sur le bouton Modification Ligne : le code modifie uniquement une ligne existante dans la feuille Accueil.
Oui. Car avant votre proposition de remettre les données da la feuille ACCUEIL dans FORMLAIRE, j'avais fait en sort de ne pouvoir modifier UNIQUEMENT la ligne sélectionnée et je faisais les cellules de toutes les colonnes en restant sur la feuille ACCUEIL.
Mais avec votre proposition, cette partie de formule n'a plus lieu d'être.
Quel est le bouton ? le rouge ou le noir ?
Ces 2 boutons sont sur la feuille FORMULAIRE. IL VALIDE LA SAISIE. En aucun cas la modification d'une ligne entreprise.
ne doit-on pas vider la feuille formulaire une fois la modification effectuée ?
Oui. Tout à fait. C'est l'équivalent du bouton noir ENREGISTRER ET EFFACER.
sur la feuille Accueil, vous cliquez sur le bouton Ajouter facture : le code ajoute une nouvelle ligne.
Oui. Tout à fait.
Si vous voulez faire un dupliquer dans les deux cas, il va falloir réfléchir sur le cas
Dans ma p'tite tête, je supprimais la ligne qui avait été modifiée et valider par le bouton noir comme si c'était un nouvel enregistrement.
votre post de Aujourd'hui à 11:34
Avez-vous placé le code mise en forme dans un module séparé (si oui, quel nom avez-vous donné ?)
NON. Je n'ai rien fait.
et supprimé le code dans la feuille formulaire ?
NON. Je n'ai rien fait.
Quid pour les points de mon post ici -> https://forum.excel-pratique.com/s/goto/1163157
J'y ai répondu aujourd'hui à 10 heures 07 pour une partie et le reste aujourd'hui à 11 heures 19
Bonne réception.
Cordialement.
Re,
1. Le code lié au bouton "Modification ligne entreprise" que je vous ai déjà donné mais dont j'ai ajouté quelques lignes
Sub ACCUEIL_Bouton4_Cliquer()
Dim code As Integer
On Error Resume Next
code = InputBox("SAISIR LE NUMERO DU CLIENT", "MODIFIER UN CLIENT")
If code = False Then Exit Sub
On Error GoTo 0
Dim tb As ListObject
Dim lig As Integer
Set tb = Sheets("Accueil").ListObjects(1)
lig = WorksheetFunction.Match(code, tb.ListColumns(1).DataBodyRange, 0)
With Sheets("Formulaire")
.Unprotect
.Range("F4:F36").ClearContents
.Range("F4") = tb.DataBodyRange(lig, 2).Value
.Range("F6") = tb.DataBodyRange(lig, 3).Value
.Range("F8") = tb.DataBodyRange(lig, 4).Value
.Range("F10") = tb.DataBodyRange(lig, 5).Value
.Range("F12") = tb.DataBodyRange(lig, 6).Value
.Range("F14") = tb.DataBodyRange(lig, 7).Value
.Range("F16") = tb.DataBodyRange(lig, 8).Value
.Range("F18") = tb.DataBodyRange(lig, 11).Value
.Range("F20") = tb.DataBodyRange(lig, 12).Value
.Range("F22") = tb.DataBodyRange(lig, 13).Value
.Range("F24") = tb.DataBodyRange(lig, 14).Value
.Range("F26") = tb.DataBodyRange(lig, 15).Value
.Range("F28") = tb.DataBodyRange(lig, 16).Value
.Range("F30") = tb.DataBodyRange(lig, 17).Value
.Range("F32") = tb.DataBodyRange(lig, 18).Value
.Range("F34") = tb.DataBodyRange(lig, 19).Value
.Range("F36") = tb.DataBodyRange(lig, 20).Value
.Range("F38") = tb.DataBodyRange(lig, 1).Value
.Activate
.Protect
Call Mise_forme_formulaire
End With
End Sub2. Mise en forme Formulaire. Le code est à placer dans un nouveau module. (donnez moi le nom que je l'ajoute dans le fichier)
Sub Mise_forme_formulaire()
With Sheets("FORMULAIRE")
.Columns("D:D").AutoFit
.Columns("F:F").AutoFit
End With
End SubEtape suivante : je regarde le code qui va modifier la feuille Accueil après modification.
1. Quel nom doit je donner à la macro ?
2. A quel bouton dois-je associer le code ? Rouge ou noir ?
3. Après actualisation des données dans la feuille Accueil on vide les données dans le formulaire
Re,
Quel nom doit je donner à la macro ?
Modification ligne Entreprise. (avec ou sans majuscule). Pas de soucis.
A quel bouton dois-je associer le code ? Rouge ou noir ?
Sur le bouton noir, car je ne pense pas que l'on ai besoin de le remodifier une seconde fois.
Le bouton noir refera donc une remise à zéro de la feuille FORMULAIRE.
Après actualisation des données dans la feuille Accueil on vide les données dans le formulaire
Avec le bouton noir: OUI.
Avec le bouton rouge l'on conserve les données sauf cellules: F14 et F16 qui seront à zéro. (prévisionnel et montant h.t.)
Mise en forme Formulaire. Le code est à placer dans un nouveau module. (donnez moi le nom que je l'ajoute dans le fichier)
Mise en forme Formulaire.
Vous pouvez pas trouver mieux.
Je pense que tout est dit dans cette phrase.
En regardant la dernière "modification ligne entreprise" j'ai vu qu'à la fin il y a Call mise en forme formulaire.
Je pense que c'est par cette instruction que la macro mise en forme formulaire, avec les auto fit, sera rattachée.
Je ne connaissais pas ce procédé.
Merci pour cette connaissance.
Bonne réception.
Cordialement.
Bonjour
Avant de vous donner les infos sur le bouton Modification :
- dans la feuille Formulaire, à quoi sert les infos que vous avez en ligne 98 et suivante ainsi que le bouton. On efface ?
- Pour plus de clarté, je pense qu'il serait utile de donner un nom à vos deux boutons. (cela va servir dans les code...)
Exemple : Bouton rouge à nommer ROUGE et bouton noir à nommer NOIR
Si oui, il suffit de sélectionner le bouton et dans la rubrique "Zone nom" (juste au-dessus à gauche de la cellule A1), tapez ROUGE ou NOIR selon le cas
Dites-moi
Bonjour Dan.
dans la feuille Formulaire, à quoi sert les infos que vous avez en ligne 98 et suivante
A l'heure actuelle c'est cela qui me sert à recopier les infos de la feuille FORMULAIRE dans la feuille ACCUEIL.
Et cela par l'instruction dans le bouton noir.
Aux vues de mes compétences en VBA, c'est la seule solution que j'ai trouvé pour effectuer cette copie.
Sheets("FORMULAIRE").Range("H100:Z100").Activate
Selection.Copy
Sheets("ACCUEIL").Visible = True
Sheets("FORMULAIRE").Visible = False
Sheets("ACCUEIL").Activate
'SELECTIONNE LA DERNIERE LIGNE VIDE
Dim DLig As Long
DLig = Range("b" & Rows.Count).End(xlUp).Row + 1
'POSITIONNE EN HAUT DU TABLEAU
Application.Goto Worksheets("ACCUEIL").Range("b" & DLig - 0), True
If ActiveCell.Offset <> "" Then
Range("b" & DLig - 0).Select
End If
If ActiveCell.Offset <> "" Then
Range("b" & DLig - 0).Select
End If
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks :=False, Transpose:=Falseainsi que le bouton. On efface ?
Le bouton, lui, OUI.
Il ne sert à rien.
J'en laisse trainer comme ça, lorsque je m'aide du développeur.
Exemple : Bouton rouge à nommer ROUGE et bouton noir à nommer NOIR
Si oui, il suffit de sélectionner le bouton et dans la rubrique "Zone nom" (juste au-dessus à gauche de la cellule A1), tapez ROUGE ou NOIR selon le cas
Dites-moi
Pour moi, cela ne pose aucun problème.
Bonne réception.
re
J'ai l'impression que vous utilisez mal les boutons lorsque vous postez un code.
- Bouton code --> </>
- Bouton citation pour reprendre une citation d'un post précédent --> "
J'ai corrigé dans votre post.
Autre point : Merci de simplement me mettre la référence du code plutot que le code. Cela alourdit moins le fil et plus simple pour moi puisque j'ai votre fichier
Voici pour la modification en feuille Formulaire :
1. Changez le nom de vos boutons rouge et noir --> Bouton Rouge --> Rouge, Bouton Noir --> Noir
2. Feuille Formulaire --> Supprimez les lignes 97 et 98, et le bouton 8
3. Ligne 38 à masquer définitivement
1. Créez un module "Mise_en_forme" et collez le code ci-dessous
Sub Mise_en_forme_formulaire()
With Sheets("FORMULAIRE")
.Columns("D:D").AutoFit
.Columns("F:F").AutoFit
End With
End Sub2. Allez dans le module MODIF_LIGNE_ENTREPRISE_NUMERO et collez les deux codes du fichier joint
Voici comment cela fonctionne :
1. click sur le bouton "Modification ligne" sur la feuille Accueil effectue les actions suivantes :
- exécute le code "Sub ACCUEIL_Bouton4_Cliquer()" qui importe les données de la ligne choisie vers la feuille Formulaire
- exécute le code "Mise_forme_formulaire"
- désactive le code lié au bouton Rouge (pour éviter de cliquer sur le mauvais bouton)
- active le code lié au bouton Noir
2. click sur le bouton Noir
- envoie les infos du formulaire dans la feuille Accueil sur la ligne concernée par la modification
- vide le formulaire
Suggestion : vous pourriez masquer les lignes et colonnes de la feuille formulaire. Cela éviterait d'aller mettre des informations ailleurs que dans les cellules à utiliser
Pour voir ce que cela donne, allez dans le menu Affichage et décochez la case "Entete"
Faites un test avant de passer au bouton suivant
Re bonjour Dan
SUPER. IMPECCABLE.
A 99%
Est il possible de faire effectuer la différence (colonne J dans ACCEUIL) entre le prévisionnel (colonne G dans ACCUEIL) et le montant h.t (colonne H dans ACCUEIL)
Et reporter ce montant en colonne U (DIR RÉELLE) de la feuille ACCUEIL, (qui en théorie ne me sert pas pour le TCD). Mais on sait jamais.....
Autrement:
désactive le code lié au bouton Rouge (pour éviter de cliquer sur le mauvais bouton)
GÉNIAL.
tb.DataBodyRange(lig, 8) = .Range("F16").Value
tb.DataBodyRange(lig, 11) = .Range("F18").Value
Il manque la ligne 10 mais pas de problème je l'ai rajouté.
Bonne réception.
Cordialement.
Est il possible de faire effectuer la différence (colonne J dans ACCEUIL) entre le prévisionnel (colonne G dans ACCUEIL) et le montant h.t (colonne H dans ACCUEIL)
Là c'est plus facile et sans code
- Allez dans la feuille Accueil
- très important --> Sélectionnez depuis J4 à Jx (x étant la dernière ligne actuelle) et effacer toutes les données
- sélectionnez J4
- mettez cette formule --> =H4-G4
Et reporter ce montant en colonne U (DIR RÉELLE) de la feuille ACCUEIL, (qui en théorie ne me sert pas pour le TCD). Mais on sait jamais.....
C'est peu compliqué cela. Vous dupliquez une colonne.... qui plus est ne sert pas dans votre TCD. A supprimer pour moi sinon :
- très important --> Sélectionnez depuis U4 à Ux (x étant la dernière ligne actuelle) et effacer toutes les données
- sélectionnez U4
- mettez cette formule --> =J4
en cas d'ajout de nouvelles lignes la formule sera mise automatiquement
Il manque la ligne 10 mais pas de problème je l'ai rajouté.
Bah je ne vois pas là..... Ligne ou colonne ?
dans quel code ?
NB : sur l'aspect tableau,
- vous voulez conserver I ? Vous pourriez choisir une couleur via MFC pour dire ce qui est en - ou en +
- colonne W, on supprime ?
Re,
Avec mes excuses pour répondre tardivement, mais j'ai du m'absenter.
- mettez cette formule --> =H4-G4
Le con.
- mettez cette formule --> =J4
Il manque la ligne 10 mais pas de problème je l'ai rajouté.
tb.DataBodyRange(lig, 14) = .Range("F24").Value
tb.DataBodyRange(lig, 16) = .Range("F28").Value
dans
Sub Modification_ligne_entreprise()
Par contre j'ai mis ligne 10, je ne sais pas ou j'ai été chercher cela (mes excuses) mais c'est la ligne 15
tb.DataBodyRange(lig, 15) = .Range("F26").Value
Mais ce n'est absolument pas grave. J'ai fait la modification.
vous voulez conserver I ?
Pour moi, OUI. Je préfère.
colonne W, on supprime ?
A l'heure actuelle, c'est cette colonne qui me détecte dans copy_creation_nom la dernière ligne du tableau en ayant supprimé les lignes vides, afin de le recopier dans la feuille ACCUEIL.
Si cette colonne est supprimée et que cela fonctionne pareil, pourquoi pas!
-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
Je viens de rencontrer un problème:
J'ai voulu faire une nouvelle saisie et en cliquant sur le bouton noir dans la macro un message erreur est apparu dans:
Sub Modification_ligne_entreprise()
Surbrillance jaune de la ligne ci-dessous:
lig = WorksheetFunction.Match(.Range("F38").Value, tb.ListColumns(1).DataBodyRange, 0).
Message:
Erreur exécution '1004'
Impossible de lire la propriété Match de la classe WorksheetFunction.
J'ai cherché ou est l'erreur que j'ai pu commettre en remettant les instructions que vous m'avez communiquées précédemment mais je ne trouve pas.
Je n'arrive pas à voir ou j'ai "merdé".
La feuille FORMULAIRE n'est pas verrouillée.
La cellule F38 du formulaire est bien vide. En recliquant dessus pour être sur quelle était bien vide (pas de point ou espace), par contre là, j'ai eu un message erreur:
Nom ambigu détecté : ACCUEIL_bouton4_cliquer
J'ai essayé de le refaire, mais il a fallu que je fasse plusieurs manipulations différentes pour le refaire réapparaitre. On dirait que c'est très aléatoire.
Bonne réception.
Cordialement.
Par contre j'ai mis ligne 10, je ne sais pas ou j'ai été chercher cela (mes excuses) mais c'est la ligne 15.... Mais ce n'est absolument pas grave. J'ai fait la modification.
Ok mais c'est juste que j'ai la même chose dans mon fichier de travail. j'ai donc modifié aussi. désolé.... pour cet oubli
A l'heure actuelle, c'est cette colonne qui me détecte dans copy_creation_nom la dernière ligne du tableau en ayant supprimé les lignes vides, afin de le recopier dans la feuille ACCUEIL.
Si cette colonne W est supprimée et que cela fonctionne pareil, pourquoi pas!
On fera. je regarderai l'impact. il faut que je comprenne les codes où vous utilisez cette colonne et surtout savoir à quoi sert cette feuille Copy_creation_nom
J'ai voulu faire une nouvelle saisie et en cliquant sur le bouton noir dans la macro un message erreur est apparu dans:
Logique ! vous allez trop vite là ..... Le code concerne uniquement une modification d'une ligne existante
Vous cliquez sur quel bouton en cas de nouvelle Saisie ?