masquer une date si cellule non renseigner

  • Initiateur de la discussion Initiateur de la discussion creolia
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

creolia

XLDnaute Impliqué
bonsoir

voici ma question es ce possible de masquer une date si la cellule n'est pas renseigner

je m'explique j'ai 4 colonne

en A une date que je dois renseigner qui influenceras sur les deux autres

en B la date de A+10 jour Formule utiliser
Code:
= A1+10

en C la date aujourdhuis Formule utiliser
Code:
= AUJOURDHUI()

en D le nombre de jour restant entre la colonne C et la B
Code:
=JOURS360(C2;B2)


mon est probleme est que vue que ma colonne A nest pas renseigner la B affiche 01/01/1900 et les jour restant 39651

je souhaiterais que ses informations soit disponible uniquement si je renseigne la ligne corespondant a la colone A voir fichier joint

pouvez svp me dire si cela est posible et comment puis je faire merci d'avance pour votre aide
 

Pièces jointes

Re : masquer une date si cellule non renseigner

re

soit avec la colonne date en A

en colonne B =SI(A2<>"";A2+10;"")
en colonne C =SI(A2<>"";AUJOURDHUI();"")
en colonne D =SI(A2<>"";JOURS360(C2;B2);"")

puis tu sélectionnes les 3 cellules et tu tires vers le bas
 
Re : masquer une date si cellule non renseigner

Bonjour Roland-M merci pour tes formules c'est nickel dans la BDD mais j'aurais du précisez qu'il devais etre aussi masquer dans la listview mais je pensais si il était masquer dans la Bdd il aurais été également dans la listview de mon USF et ce n'est pas le cas faut il également faire une macro pour cela? merci de ton aide a bientôt
 
Re : masquer une date si cellule non renseigner

Bonjour Créolia, le fil,

Si tu ne veux pas afficher la valeur dans ta listview, en effet cela se passe au niveau de ta macro. Mais pas la peine de faire une macro spécialement pour ça, inclus le code ci-dessous dans la macro de ton UserForm.

Par exemple dans la macro : Private Sub UserForm_Initialize()

Si tu veux que ta Listview soit rempli dés affichage de ton UserForm. Sinon le mettre dans la macro adéquat.

Code:
[COLOR="green"]' Début de ta macro[/COLOR]

ComboboxListeDate.Clear
  
For NuméroLigne = 4 To 20
    If Cells(NuméroLigne, 1) <> 0 Then ComboboxListeDate.AddItem
Next NuméroLigne

[COLOR="green"]' Fin de ta macro[/COLOR]

Remplacer ComboboxListeDate par le nom de ta Listview.

Bonne après midi
 
Dernière édition:
Re : masquer une date si cellule non renseigner

RE BONJOUR

désoler mais finalement y a pas de soucis c'est une erreur de ma part


Mais la j'ai un big problème que j'avais pas prévue j'ai bien tirée vers le bas

comme tu ma dit la ou sa bloque c'est quand j'ajoute une nouvelle ligne via USF

il m'efface les formule a l'intérieur

le code tu le connais bien c'est le tien lol

Code:
With Worksheets("Base")
DernLig = .Cells(.Columns(1).Cells.Count, 1).End(xlUp).Row + 1
TextBoxNoOrdre = Application.WorksheetFunction.Max(.Range("A2:A" & DernLig)) + 1
  .Cells(DernLig, 1) = CLng(TextBoxNoOrdre)
  .Cells(DernLig, 2) = TextBoxNom
  .Cells(DernLig, 3) = TextBoxPrenom
  .Cells(DernLig, 4) = TextBoxService
  RemplirComboxBase ' <<<<<<<<<<<<<<<<<
ComboBoxBase = TextBoxNom ' <<<<<<<<<

comment puis je faire pour qu'il n'efface pas ma formule dois je faire a la place des formule des code VBA

je sais pas trop merci pour tes lumière

a bientot
 
Re : masquer une date si cellule non renseigner

re

excuses moi camarade ! mais :
le gros souci avec toi c'est que tu est bordélique !
tu tapes à travers tout !
tu ne suis pas tes fils !
tu en mets trop !
tu n'as même pas vu le classeur que j'ai remis sur le fil précédent
qui est > Actualise une combobox à 13h10
dans lequel j’avais incorporé ce que tu demandais la suppression d’un agent !

alors :
maintenant pour ne pas écraser les formules c’est très facile !
mais il faut de l’organisation et de la rigeur ! ce dont tu n’as pas !
et puis on suit avec le même classeur modèle allégé !
pour ne pas écraser les formules il y a un truc très simple en ce qui te concerne
dans les feuilles on prévoit une première ligne
dans laquelle on mettra un signe par exemple l’astérisque * qui servira de test dans les codes
ceci à chaque colonne ne pouvant être écrasées à la recopie !

mais voilà on ne sait plus où tu en est avec tout ça !?
j’ai modèle qui n’est certainement plus celui actuel
car tu ne gardes pas ce modèle afin de le remettre sur le fil qui doit rester le même !
ceci même avec des questions différentes !
car prendre des codes comme ça à la volée ça ne peu que te mener à la cata !
 
Re : masquer une date si cellule non renseigner

bonsoir

Je suis dsl d'être bordélique c'est juste qu'ont ma dit si une question était différentes de la précédente de faire un nouveau fil.

ils est vrais quand je bloque sur un truc j'essais de continuer en attendant de trouver une solution et de l'adapter a mon projet j'ai pas encore les bon reflex mais je bosse dur pour essayer pour preuve ma dernière mise a jour avec tous les solutions que tu ma apporter depuis plusieurs jour même en allégeant il reste a 81ko donc je l ai mis sur un site de stockage de fichier

HTML:
http://www.cijoint.fr/cjlink.php?file=cj201003/cij22xE3OB.zip

a ceci j'ai rajouter certaine chose comme un code pour empêcher les doublons et un autre ou cas ou le nom et prénom existerais la possibilité de modifier sa ressemble a du bidouillage mais sa a l'air de fonctionner part apport a mes mince connaissance voila donc.

je sais pas ce que t'en pense

merci a bientot
 
Re : masquer une date si cellule non renseigner

Bonjour a tous je souhaiterais avoir u peut plus d'info svp sur l'atuce plus haut pour pas ecraser mes formule lors d'un ajout de ligne

pour ne pas écraser les formules il y a un truc très simple en ce qui te concerne
dans les feuilles on prévoit une première ligne
dans laquelle on mettra un signe par exemple l’astérisque * qui servira de test dans les codes
ceci à chaque colonne ne pouvant être écrasées à la recopie !

merci pour votre aide

a bientot
 
Re : masquer une date si cellule non renseigner

explication,

Il te faut une ligne pour placer des * dans les colonnes qui ont des formules

dans les feuilles formation tu as justement des cellules fusionnées
qu’il te faut supprimer pour récupèrer une ligne
tu placera tes entêtes en ligne 4
la ligne 3 libérée servira pour mettre des * dans les colonnes là où il y a des formules.

exemple :
je vois des formules en colonne F je mets donc dans la cellule F3 un *
et ceci à chaque colonne où il y a des formules manuellement

dans le code, à l’enregistrement, au moment d’écrire dans les cellules
on lit les cellules de cette ligne 3

ça donne un truc du genre exemple dans > Sub ButtonMaJ_Click()
. . .
. . .

tu rajoutes > If .Cells(3, NoDeCol) <> "*" Then recopi dans cellule

With Sheets(NomDeLaFeuilFormation)
'les textbox en haut sous ComboBoxBase
If .Cells(lig, 1) = "" Then
If .Cells(3, 1) <> "*" Then .Cells(lig, 1) = TextBoxNoOrdre
If .Cells(3, 2) <> "*" Then .Cells(lig, 2) = TextBoxNom
If .Cells(3, 3) <> "*" Then .Cells(lig, 3) = TextBoxPrenom
If .Cells(3, 4) <> "*" Then .Cells(lig, 4) = TextBoxService
End If
'les textbox en bas sous ListView
If .Cells(3, 5) <> "*" Then .Cells(lig, 5) = TextBoxDernFormation
If .Cells(3, 6) <> "*" Then .Cells(lig, 6) = TextBoxDateLimitRecycl
If .Cells(3, 7) <> "*" Then .Cells(lig, 7) = TextBoxPrevisFormation
If .Cells(3, 8) <> "*" Then .Cells(lig, 8) = TextBoxComment
If .Cells(3, 9) <> "*" Then .Cells(lig, 9) = TextBoxJourRestant
End With

maintenant, tu dis ceci au début de ton message :
> Bonjour a tous je souhaiterais avoir u peut plus d'info svp sur l'atuce plus haut pour pas ecraser mes formule lors d'un ajout de ligne

il faut savoir que ça n'écrasera pas les formules parceque simplement on ne recopi pas de données à ces endroit !
concernant l'ajout de ligne ça n'écrase ni ne crée rien du tout
il faudrait revoir ton code pour justement créer ces formules par code VBA sinon à chaque ajout de ligne tu vas devoir aller copier tes formules
il y a encore du travail !

EDIT

'exemple pour coller la formule suivante en F6 "=SI(E6<>"";E6+10;"")
'avec sa colonne no 6 pour F et son No de Ligne

'variable Lig pour no de Ligne et la col testée E . . . ça donne ceci :
F$ = "=SI(E" & Lig & "<>" & Chr(34) & Chr(34) & ";E" & Lig & "+10;" & Chr(34) & Chr(34) & ")"
.Cells(Lig, 6).FormulaLocal = F$
.
 
Dernière édition:
Re : masquer une date si cellule non renseigner

Re bonjour


Alors j'ai essayer de faire ce que tu ma dis je pense que j'ai reussis en partis c'est à dire pour ne pas copier les colonne ayan une (*)

Code:
With Sheets(NomDeLaFeuilFormation)

'les textbox en haut sous ComboBoxBase
If .Cells(lig, 1) = "" Then
If .Cells(3, 1) <> "*" Then .Cells(lig, 1) = TextBoxNoOrdre
If .Cells(3, 2) <> "*" Then .Cells(lig, 2) = TextBoxNom
If .Cells(3, 3) <> "*" Then .Cells(lig, 3) = TextBoxPrenom
If .Cells(3, 4) <> "*" Then .Cells(lig, 4) = TextBoxService
End If
'les textbox en bas sous ListView
If .Cells(3, 5) <> "*" Then .Cells(lig, 5) = TextBoxDernFormation
If .Cells(3, 6) <> "*" Then .Cells(lig, 6) = TextBoxDateLimitRecycl
If .Cells(3, 7) <> "*" Then .Cells(lig, 7) = TextBoxPrevisFormation
If .Cells(3, 8) <> "*" Then .Cells(lig, 8) = TextBoxComment
If .Cells(3, 9) <> "*" Then .Cells(lig, 9) = TextBoxJourRestant

End With
en revanche pour faire la formule en vba sa merdouille un peut une erreur de declaration de variable

j'ai essayer de mettre sa
Code:
Dim F$ As Long

et du coup j'ai eu droit a un autre message d'erreur qui est

erreur de compilation fin d'instruction Attendu

pourais tu me dire stp ce que sa signifie et comment je peut y remedier merci d'avance pour ton aide


Code:
Private Sub ButtonMaJ_Click() ' mise à jour recopi contenu TextBox dans la feuille FormationNo

Dim retMsg As Integer
Application.DisplayAlerts = False
retMsg = MsgBox("La fiche à été mise à jour...  Voulez-vous Continuez sur cette fiche ?", vbInformation + vbYesNo, "continuer sur cette fiche?...")
'Si la suppression est confirmée
If retMsg = vbNo Then
Unload Me
UserForm1.Show
End If
If retMsg = vbYes Then
Label20.Visible = True
Label14.Visible = False
Label15.Visible = False
Label16.Visible = False
Label17.Visible = False
Label19.Visible = False
Label21.Visible = False

With Sheets(NomDeLaFeuilFormation)

'les textbox en haut sous ComboBoxBase
If .Cells(lig, 1) = "" Then
If .Cells(3, 1) <> "*" Then .Cells(lig, 1) = TextBoxNoOrdre
If .Cells(3, 2) <> "*" Then .Cells(lig, 2) = TextBoxNom
If .Cells(3, 3) <> "*" Then .Cells(lig, 3) = TextBoxPrenom
If .Cells(3, 4) <> "*" Then .Cells(lig, 4) = TextBoxService
End If
'les textbox en bas sous ListView
If .Cells(3, 5) <> "*" Then .Cells(lig, 5) = TextBoxDernFormation
If .Cells(3, 6) <> "*" Then .Cells(lig, 6) = TextBoxDateLimitRecycl
If .Cells(3, 7) <> "*" Then .Cells(lig, 7) = TextBoxPrevisFormation
If .Cells(3, 8) <> "*" Then .Cells(lig, 8) = TextBoxComment
If .Cells(3, 9) <> "*" Then .Cells(lig, 9) = TextBoxJourRestant

End With
  'les textbox en haut sous ComboBoxBase
  
lig = 0
NomDeLaFeuilFormation = ""
TextBoxDernFormation = ""
TextBoxDateLimitRecycl = ""
TextBoxPrevisFormation = ""
TextBoxComment = ""
TextBoxJourRestant = ""
ButtonMaJ.Visible = False
End If

Dim V$
V$ = ComboBoxBase
ComboBoxBase = ""
ComboBoxBase = V$
'exemple pour coller la formule suivante en F6 "=SI(E6<>"";E6+10;"")
'avec sa colonne no 6 pour F et son No de Ligne

'variable Lig pour no de Ligne et la col testée E . . . ça donne ceci :
F$ = "=SI(E" & lig & "<>" & Chr(34) & Chr(34) & ";E" & lig & "+10;" & Chr(34) & Chr(34) & ")"
.Cells(lig, 6).FormulaLocal = F$

MsgBox "Selectionnez une autre formation"
End Sub

Code:
Option Explicit
Dim Index1 As Long, lig As Long, DernLig As Long, Cellule As Range
Dim NomDeLaFeuilBase As String, NomDeLaFeuilFormation As String
Dim retMsgas As Long
Dim retMsg2 As Long
Dim DblClick As Long
Dim ComboxBase As Long
Dim NoDeCol As Long
Dim F$ As String

HTML:
http://www.cijoint.fr/cjlink.php?file=cj201003/cijaCnuSWQ.xls
 
Re : masquer une date si cellule non renseigner

ci-joint ta modif !
tu reprends le code et tu supprimes au début ton Dim F$ As Long
Dim F$ > $ signifie chaine de caratères idem Dim F As String

ceci > Dim retMsg As Integer pour retour msgbox
c’est > Dim retMsg As Variant c'est mieux ça peut servir pour d'autres saisies

je vois que tu n’as pas suivi mes conseils concernant la nomination des objets !?
pour t’aider ça devient laborieux !
Franchement je sais pas comment tu fais pour t’y retrouver
avec des objets sans nom et sans commentaire !?

j'ai vu aussi des If en début de Sub avec le End If qui se ballade vers la fin du Sub sans trop savoir le début et la fin du test parmis d'autres !
tout ça parceque le code est entassé pêle-mêle et sans décrochage de lignes

un exemple parmis tant d’autres :
CommandButton4.Visible = True <<< ici il est True
CommandButton8.Visible = True <<<<<<<<<<<<<<<< ça c’est qui/quoi !? on sait pas !?
ButtonCreatNom.Visible = False <<<<<<<<<<<<<<<< ça ok, on c’est quoi !
CommandButton4.Visible = False <<< ici il est False !?

Voir aussi tout au début du code userf ceci : (à moins que ton classeur soit incomplet !)
Dim retMsgas As Long 'ne sert nulle part !
Dim retMsg2 As Long 'ne sert nulle part !
Dim DblClick As Long ' une horreur à supprimer !
Dim ComboxBase As Long ' ne sert nulle part en plus tu as l’objet ComboBoxBase !?!
Dim NoDeCol As Long ' ne sert nulle part de plus NoDeCol As Integer aurait été suffisant


Code:
Private Sub ButtonMaJ_Click() ' mise à jour recopi contenu TextBox dans la feuille FormationNo

Dim retMsg As Variant
Application.DisplayAlerts = False
retMsg = MsgBox("La fiche à été mise à jour...  Voulez-vous Continuez sur cette fiche ?", vbInformation + vbYesNo, "continuer sur cette fiche?...")
'Si la suppression est confirmée
If retMsg = vbNo Then Unload Me: UserForm1.Show

'suite ne peut être que vbYes donc If retMsg = vbYes inutile

Label20.Visible = True
Label14.Visible = False
Label15.Visible = False
Label16.Visible = False
Label17.Visible = False
Label19.Visible = False
Label21.Visible = False

With Sheets(NomDeLaFeuilFormation) '---------------------------------------

   'les textbox en haut sous ComboBoxBase
   If .Cells(Lig, 1) = "" Then
      If .Cells(3, "A") <> "*" Then .Cells(Lig, "A") = TextBoxNoOrdre
      If .Cells(3, "B") <> "*" Then .Cells(Lig, "B") = TextBoxNom
      If .Cells(3, "C") <> "*" Then .Cells(Lig, "C") = TextBoxPrenom
      If .Cells(3, "D") <> "*" Then .Cells(Lig, "D") = TextBoxService
   End If
   'les textbox en bas sous ListView
   If .Cells(3, "E") <> "*" Then .Cells(Lig, "E") = TextBoxDernFormation
   If .Cells(3, "F") <> "*" Then .Cells(Lig, "F") = TextBoxDateLimitRecycl
   If .Cells(3, "G") <> "*" Then .Cells(Lig, "G") = TextBoxPrevisFormation
   If .Cells(3, "H") <> "*" Then .Cells(Lig, "H") = TextBoxComment
   If .Cells(3, "I") <> "*" Then .Cells(Lig, "I") = TextBoxJourRestant
   
   'les formules en Col(F) et Col(I)
   Dim F$
   
   'Col F Exp Lig(5) =SI(E5<>"";E5+10;"")
   F$ = "=SI(E" & Lig & "<>" & Chr(34) & Chr(34) & ";E" & Lig & "+10;" & Chr(34) & Chr(34) & ")"
   .Cells(Lig, "F").FormulaLocal = F$

   'Col I Exp Lig(5) =SI(E5<>"";JOURS360(F5;J5);"")
   F$ = "=SI(E" & Lig & "<>" & Chr(34) & Chr(34) & ";JOURS360(F" & Lig & ";J" & Lig & ");" & Chr(34) & Chr(34) & ")"
   .Cells(Lig, "I").FormulaLocal = F$

End With '-----------------------------------------------------------------

'les textbox en haut sous ComboBoxBase
Lig = 0
NomDeLaFeuilFormation = ""
TextBoxDernFormation = ""
TextBoxDateLimitRecycl = ""
TextBoxPrevisFormation = ""
TextBoxComment = ""
TextBoxJourRestant = ""
ButtonMaJ.Visible = False

Dim V$
V$ = ComboBoxBase
ComboBoxBase = ""
ComboBoxBase = V$

MsgBox "Selectionnez une autre formation"
End Sub
 
Dernière édition:
Re : masquer une date si cellule non renseigner

Re bon jour Roland merci pour tes critique constructive et conseil il est vrais je m'enflame et je travail beaucoup a la bidouille et se qui me semble correct une fois terminée je tenterais faire du rangement mais pour l'instant mon peut experience me conduiras a la catha au moindre modification

en tous cas merci pour tous

a bientot
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

Réponses
3
Affichages
224
Réponses
4
Affichages
211
  • Résolu(e)
Microsoft 365 DATEDIF
Réponses
11
Affichages
236
Réponses
6
Affichages
266
Réponses
1
Affichages
336
Réponses
4
Affichages
518
Retour