Insertion de lignes dans un tableau en tenant compte des semaines
re
Si nous réinsérons une nouvelle ligne, c'est cette ligne qui sera remplacée.
Est-il possible de faire apparaître un message du genre "Merci de remplir l'ensemble des champs" dans le cas ou au moment d'insérer une ligne une personne oubli un ou plusieurs champs ?
Quels sont les champs qui doivent être impérativement remplis ?
Je suppose que certains champs peuvent rester vides ?
Cordialement
Bonjour Dan,
Absolument tous les champs doivent-être rempli.
Dans le cas où aucune information ne peut être inscrite, on pourrait par exemple mettre nc ou na.
Merci
Cordialement
Bonjour
Dans le cas où aucune information ne peut être inscrite, on pourrait par exemple mettre nc ou na.
oui mais cela vous oblige à mettre quelque chose aussi et l'utilisateur ne sera pas sensé savoir qu'il doit mettre NA ....
Je peux vous mettre le fichier mais si vous voulez avancer par vous même je vous donne ce qu'il faut modifier. Dites-moi
NB : pour le numéro de semaine, je vois que vous faites précéder d'un S. Est-ce que vous ne préférez pas que l'utilisateur entre uniquement le numéro et que le code vous mette le S automatiquement ? . exemple : Semaine 1, vous mettez 1 et le code mettra S01 dans la cellule
Dan,
Tous les champs devrons être renseignés même s'il faut mettre NA ou NC.
Afin d'avertir les utilisateurs, j'ai intégré un commentaire dans l'USF
Et en effet, dans le cas d'un oubli, je souhaiterai effectivement faire apparaître un message automatique, mais là je pèche un peu
Et pour ce qui est des semaines, je veux bien que l'on note uniquement le chiffre et qu'il m'indique S10 par exemple
Merci
Tous les champs devrons être renseignés même s'il faut mettre NA ou NC.
Et en effet, dans le cas d'un oubli, je souhaiterai effectivement faire apparaître un message automatique, mais là je pèche un peu
Ok voici ce que vous devez faire dans l'USF
- Allez dans l'éditeur VBA et cliquez sur l'USF
- A gauche, vous devez avoir une fenêtre Propriété. Si vous ne la voyez pas, allez dans le menu affichage et choisissez "Fenêtre Propriétés"
- Cliquer sur chacun des Texbox de votre USF, et dans la fenêtre propriété, allez à la propriété TAG
- dans cette propriété, ajoutez le nom du Label que vous avez placé en regard de la texbox. Exemple : pour la textbox boxsemaine, vous mettez "Semaine" dans la propriété Tag
- Faites de même pour toutes les textbox
Dites-moi si ok et quand vous avez terminé
Et pour ce qui est des semaines, je veux bien que l'on note uniquement le chiffre et qu'il m'indique S10 par exemple
Ok c'est noté et sera prit en compte dans le code Private Sub CommandButton1_Click()
Bonjour Dan,
Fait.
J'ai noté dans le TAG de chaque TextBox le (Name) donné pour chaque Label associés
Cordialement
Bonjour
J'ai noté dans le TAG de chaque TextBox le (Name) donné pour chaque Label associés
C'est pas bon si vous avez utilisé le nom de la textbox. Il faut prendre le nom du label qui plus lisible pour l'utilisateur. C'est elle qui va être renvoyée en cas de non remplissage de la textbox
Pour le code, allez dans votre USF et modifiez comme ceci
1. Tout en haut des codes (donc avant toutes les Private sub... là où vous avez Option explicit), mettez cette ligne
Dim flag As Boolean2. Dans le code Private Sub CommandButton1_Click(), juste avant With feuil1, ajoutez ces deux lignes
Call controle
If flag = True Then Exit Sub3. En dessous de tous vos codes, ajoutez ceci
Private Sub controle()
Dim c As Control
For Each c In Me.Controls
If TypeName(c) <> "Label" Then
If c.Value = vbNullString Then MsgBox "Veuillez compléter la rubrique " & c.Tag, , "Rubrique incomplète": flag = True: Exit Sub
End If
Next c
flag = False
End SubFaites un test
Bonjour,
Nous nous sommes pas compris mais j'avais bien noté les TAG.
J'ai insérer les modifications et le test est concluant
Par contre, le 1er point : Il me manque le S inséré automatiquement pour les semaines
2ème point : Afin d'éviter de supprimer malencontreusement la ligne 4 (la principale), j'ai figer les volets entre la L4 et L5 et noter en L4 un exemple de ligne. J'ai ensuite protéger la feuille. Cette ligne est donc bloquée.
Par contre, je ne peux plus insérer de nouvelles lignes du fait que la feuille est protégé (erreur)
Avez-vous une parade à cela ?
Merci
re
Nous nous sommes pas compris mais j'avais bien noté les TAG.
Effectivement. Dans votre message, j'avais compris que aviez mis le nom de la textbox dans le Tag. Genre ceci --> Box......
Point Ok donc
1er point : Il me manque le S inséré automatiquement pour les semaines
Oups. exact désolé..
Allez dans le code Private Sub CommandButton1_Click() et modifiez cette ligne (juste en dessous de la mention "Saisir les informations"
.Cells(dlg + 1, 2) = "S" & Format(BoxSemaine.Text, "00") 'num semaine2ème point : Afin d'éviter de supprimer malencontreusement la ligne 4 (la principale), ......Par contre, je ne peux plus insérer de nouvelles lignes du fait que la feuille est protégé (erreur)
Alors il va falloir déprotéger la feuille à chaque fois que vous voulez la compléter et reprotéger à la fin. Vous mettez un mot de passe à blanc ou pas ?
Sinon il y a moyen de faire autrement en ne protégeant que les lignes 1 à 4 et en protégeant la feuille une fois la ligne 4 complétée
Bonjour Dan,
1er pt : Cela fonctionne
Pour le second point, j'ai vu qu'il était possible de déprotéger et reprotéger une feuille automatiquement sans mot de passe avec du codage VBA.
Après avoir fait quelques recherches, j'ai ces 2 codes
Worksheets("Feuil1").Unprotect
Worksheets("Feuil1").ProtectJe pense qu'il faut intégrer la déprotection au niveau de la macro. Je l'ai intégré ici :
Sub Nouvelle_DEM()
NouvelleLigneUSERFORM.Show
'Déprotection de la feuille 1
Worksheets("Feuil1").Unprotect
End SubPar contre, je pense qu'il faut reprotéger la feuille au niveau des 2 commandes "Ajouter une ligne" et "Fermer" ?
J'ai insérer ceci sans succès. Cela ne doit pas être au bon endroit :
'Ré-applique la protection sur la feuille 1
Worksheets("Feuil1").ProtectRe
Si vous voulez faire comme cela, allez dans le code Private Sub CommandButton1_Click()
- Juste en dessous de Feuil1, mettez ceci
.Unprotect- juste après la ligne Call Mise_en_forme, mettez ceci
Feuil1.ProtectNB : sachez que votre mot de passe est à blanc et donc que quelqu'un qui n'utilise pas le code saura toujours supprimer quelque chose en direct sur la feuille. Raison de ma question à laquelle vous n'avez pas répondu
Pensez aussi à la solution que je vous ai proposée avant
Si ok, on peut passer à l'étape suivante si vous voulez
Alors il va falloir déprotéger la feuille à chaque fois que vous voulez la compléter et reprotéger à la fin. Vous mettez un mot de passe à blanc ou pas ?
Sinon il y a moyen de faire autrement en ne protégeant que les lignes 1 à 4 et en protégeant la feuille une fois la ligne 4 complétée
Je veux être le seul à avoir accès aux modifications. Je mettrai donc un mdp
Le seul accès disponible sera pour les colonnes de B à P "Sélectionner les cellules déverrouillées"
Si j'utilise la seconde solution, je crains aux mauvaises manipulations comme par exemple la suppression des formules en colonne A ou T, le changement de caractères, police, ...
Cela m'amène à une autre question mais avant cela je dois vous expliquer le principe de ce tableau.
- Les utilisateurs me communiquent des informations pour établir des rapport de contrôles (Colonnes B à P)
- L'ensemble des informations communiquées me permettent de donner un temps en heure et donc un Nbre de jour de contrôle
- Suivant la charge, je planifie et communique un délai (Semaine et Date)
- La Feuil2 (encore en cours d'évolution) est le calendrier de l'année.
- Les utilisateurs me communiquent une couleur par semaine qui sera mise sur toute la ligne de B à O. (Une couleur = 1 semaine)
- Pour exemple, si j'ai 5 jours 1/2 de travail pour un ctrl, je voudrais que cela me crée sur la ligne correspondante et à partir de la colonne X, 11 cases de la couleur fusionnée (1 case = 1/2 jour).
- A l'intérieur de cette case, je souhaiterai avoir certains renseignements (3 derniers chiffre de la colonne C et le délai de la colonne V)
- Je n'aurai plus que faire un copier/coller des cellules fusionnées pour les intégrer dans le calendrier de la Feuil2
Pensez-vous que cela soit possible à réaliser ?
Si c'est le cas, seriez-vous d'accord pour continuer ce projet ?
Merci
Je veux être le seul à avoir accès aux modifications. Je mettrai donc un mdp
Alors il faut déjà le prévoir dans l'instruction en mettant un mot de passe bidon
Si j'utilise la seconde solution, je crains aux mauvaises manipulations comme par exemple la suppression des formules en colonne A ou T, le changement de caractères, police, ...
Non parce que le mot de passe bloquera le changement. Faites un test avec ceci
- Sélectionnez les lignes 1 à 4
- Allez dans le menu Accueil --> Format et choisir "Format de cellule"
- sous l'onglet "Protection" cochez la case "Verrouillée"
- toujours dans le menu format, cliquez sur protection
- cochez les 5 premières cases et mes 2 dernières
- ensuite ajoutez votre mot de passe
Là vous avez accès à toutes les cellules sauf celles des 4 premières lignes
Une fois fait il faut juste adapter le code pour prévoir que si la dernière ligne est la ligne 3 on doit pour déprotéger la ligne 4 pour la compléter puis reprotéger. Mais là cette action ne se fera qu'une seul fois
Maintenant si vous voulez à chaque protéger toute la feuille ce sera différent
Cela m'amène à une autre question mais avant cela je dois vous expliquer le principe de ce tableau.
.....
Si c'est le cas, seriez-vous d'accord pour continuer ce projet ?
Oui pourquoi pas.
Il faudrait que vous me montriez un exemple sur votre feuille car là je me pose ces questions :
- Quel est la correspondance entre la colonne I (initiales du demandeur ?) et la colonne A dans le calendrier ?.
- Comment allez vous mentionner les 1/2 journée dans la feuille Prevision
- Lorsque vous dites 3 derniers chiffres de la colonne C et date en V : Cela devrait se présenter comment ?
Pour la question du copier coller, il y a peut être une autre solution mais à analyser après en fonction d'un exemple
Bonjour Dan,
Avec tous les soucis que j'ai eu par le passé, j'opte pour la protection de la feuille tout en laissant la possibilité de changer des informations dans le tableau vert
- Quel est la correspondance entre la colonne I (initiales du demandeur ?) et la colonne A dans le calendrier ?
Une fois les infos du demandeur indiqués, j'analyse le temps passé et le délai souhaité. Je rempli ensuite le tableau de droite en bleu en indiquant la date de réception, la durée en h ce qui me donne par la formule suivante =SI(S4="";"?";PLAFOND(S4/6;0,5)) une durée en jour de contrôle et ensuite j'indique mon délai de remise du rapport.
La colonne A permet aux demandeurs de voir en direct l'état actuel du contrôle + si une demande doit passer en urgence entre temps, j'indique "U" en colonne R pour passer en priorité le contrôle
- Comment allez vous mentionner les 1/2 journée dans la feuille Prévision ?
- Lorsque vous dites 3 derniers chiffres de la colonne C et date en V : Cela devrait se présenter comment ?
Voir le fichier attaché
Je n'aurai plus qu'a effectuer un copier/coller de la bande colorée pour l'insérer dans le calendrier
Je ne vais pas pour le moment aller plus loin dans mes demandes
Merci Dan
Bonjour,
Au vu de votre dernier message, je vous propose ceci :
Une fois que toutes les colonnes entre Q et V d'une ligne sont complétées, vous sélectionnez une cellule sur la ligne entre A et V et via
un bouton on ajoute les infos et couleur à partir de la colonne X
Cela suppose bien entendu que chaque cellule entre Q et V ont une info
Exemple en R7 il vous manque une info, donc pas possible de compléter les colonnes X et suivantes
Pour chaque ligne vous devrez cliquer sur le bouton bien entendu
Votre avis ?
Je peux toujours insérer en colonne R un "R", indiquant que nous avons réceptionné le contrôle et dans ce cas, nous aurons toutes les colonnes de complétée.
L'idée est bonne. Par contre, après avoir activé ce bouton, sera t'il possible de revenir dessus en cas de modification. Si c'est le cas, ça marche
Merci encore
Je peux toujours insérer en colonne R un "R", indiquant que nous avons réceptionné le contrôle et dans ce cas, nous aurons toutes les colonnes de complétée.
Oui c'est une info à ajouter dans votre liste alors ?
Ne sachant pas, je pensais que ce serait utile de n'enregistrer que si les colonnes sont complétées. Là on fait dire au code que si ces 6 colonnes sont complétées on peut enregistrer.
Pour la modification, cela en tiendra compte. Le code effacera toujours en premier les données à partir de X avant l'importation.
Par contre si vous supprimez par après quelque chose entre Q et V, vous devrez recliquer sur le bouton. exemple : vous vous êtes trompé et vous supprimez le R en colonne R... Si vous oubliez le bouton les données depuis X resteraient en place.
Si cela ne convient pas on peut aussi faire en automatique sur changement d'une cellule entre Q et V et là plus de bouton...
NB : il y a une chose que vous devez absolument changer. En X vous avez fusionné la ligne 2 et 3 et placé un retour à la ligne. Là c'est vraiment à ne jamais faire. Déjà les fusions posent des soucis mais lors ne parlons pas des retours à la ligne. Donc pour bien faire, mettez J en X2 et 0,5 en X3. Je modifie dans ce sens dans le fichier posté
Fichier modifié suite à votre recommandation
J'ai intégrer le R = réceptionné.
Pour le choix, le sans bouton me convient plus. Plus de risque d'oubli
Par contre, je voulais mettre toutes les dates sous le format "14-déc." mais parfois j'ai la date qui change en "14/12/2023" ou "14/12/23". Exemple dans le fichier en N8 et O8. Je ne comprends pas pourquoi. J'ai donc généralisé en "14/12/23" mais ce format ne me convient pas (trop chargé je trouve)
C'est une remarque que beaucoup de personnes constatent dans les différents tableaux que nous avons.
Seriez-vous pourquoi ?
Pour le choix, le sans bouton me convient plus. Plus de risque d'oubli
Ok.
Là j'ai besoin de ces infos :
- Vous avez nommé votre feuille Provisio. 2024. Le mieux serait d'éviter le point et de mettre le nom complet. "Provision" je suppose ?
- Allez-vous avoir d'autres feuilles Provisio dans le fichier qui seront concernées par le même suivi et si oui, quel nom allez-vous utiliser ?
Par contre, je voulais mettre toutes les dates sous le format "14-déc." mais parfois j'ai la date qui change en "14/12/2023"
Pour vos dates :
- sélectionnez N5 à O8
- puis dans la rubrique Nombre, cliquez sur la liste déroulante et choisissez "autres format numériques" puis "Personnalisé".
- sélectionnez le format "jj-mmm" puis OK
Ne me postez plus de fichier car je dois à chaque fois transférer ce que j'ai préparé dans celui que vous me postez.
Bonjour,
- Nom définitif du 1er onglet : Prévisionnel 2024
- Uniquement 2 feuilles, la seconde étant : Calendrier
Ok pour la date, mais si une personne note JJ/MMM au lieu de JJ-MMM. j'ai des loupés.
Exemple ok : 12-12 = 12-déc.
Exemple nok : 12/12 = 12/12 mais parfois cela fonctionne, je ne peux pas dire pourquoi, c'est étrange.
Ok pour ne plus envoyer de fichier