problémme sur une formulle

0

Bonjour

Je me trouve devant un problème sur cette formule =SI(NBCAR(F4)=4;CNUM(GAUCHE(F4;1));CNUM(GAUCHE(F4;2)))  Ex : Si la cellule F4 Vide H5 me net  ceci ### je ne sais comment faire

Je vous joins mo fichier (si je n’ai pas sus me faire comprendre)

Cordialement

https://www.cjoint.com/c/MFyqBtqA85s


    Posté le 24 juin 2023, 18:35
    par serge
    Répondre
    0

    Bonsoir serge,

    ton fichier en retour : https://www.cjoint.com/c/MFyvNHKcll0

    feuille "Contact", formule en H4 :

    =SI(NBCAR(F4)<4;"";GAUCHE(TEXTE(F4;"00000");2))

    (cette formule a été étendue automatiquement
    vu que c'est dans un tableau structuré)

    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

    bonus : sur la feuille "UEE", j'ai un peu amélioré la présentation ; note :
    dans une cellule, taper du texte, puis appuyer sur les touches Alt Entrée
    pour passer à la ligne tout en restant dans la même cellule.

    pour B2, j'ai fait Alt Entrée juste après le mot "Convention".

    sur la ligne 2, pour les autres en-têtes (de 3 lignes), j'ai fait Alt Entrée
    juste après le dernier mot de la 1ère ligne, puis encore Alt Entrée
    juste après le dernier mot de la 2ème ligne.

    exemple pour A2 : j'ai fait Alt Entrée après le mot "membres"
    puis Alt Entrée après le mot "Union".

    pour A2:F2 : alignement vertical Centré et alignement horizontal Centré.

    hauteur de la ligne 2 : 86 ; zoom de la feuille : 94 %.

    rhodo

    rhodo Posté le 24 juin 2023, 23:57
    par rhodo
    0

    bonjour 

    merci d'avoir regarder 

    pour indication cela vas me servir pour la suite car mon fils na demander autre chausse

    pour ce classeur (car il fait de la radio) donc je vais faire (heure et datte du jour d'écriture)

    et qu'il garde en mémoire.je reviendrait vous voir ci il y lieu mais je vous tien aux courent 

    et encore MERCI. 

    Posté le 25 juin 2023, 12:40
    par serge
    0

    Bonjour

    Ok pour datte et heure maintenant je fais certaine condition mais ne marche pas sur toute la linge

    =14 ok

    sup 14 ok

    inf 14 ok

    mais quand cellule vide prend la couleur de inf 14 ??? (VERT)

    Pouvez vous regarder et explication en même temps pour la suite a venir

    la ligne devrais rester vierge

    En vous en remerciant

    https://www.cjoint.com/c/MFAsEMU4Fws


    Posté le 26 juin 2023, 20:35
    par serge
    0

    Bonsoir serge,

    ton fichier en retour : https://www.cjoint.com/c/MFAt30OZiL0

    ----------------------------------------------------------------------------------------------------------------

    Partie A

    MFC = Mise en Forme Conditionnelle

    tu as écrit : « mais quand cellule vide prend la couleur de inf 14 ??? (VERT) »

    si, c'est normal ; car quand une cellule est vide, sa valeur est : 0 ; puis comme
    0 est inférieur à 14, ça applique ta MFC initiale de inf 14 : =$A4<14 ➯ VERT.

    pour corriger la règle MFC de inf 14, voici la nouvelle formule :

    =ET($A4<14;$A4<>"")

    ➯ les lignes 9 et 15 restent vierges (pas de couleur).

    ----------------------------------------------------------------------------------------------------------------

    Partie B

    dans ton classeur initial, ce que tu as fait pour Date et Heure (colonnes M et N),
    ça ne va pas du tout !  :(

    ta formule initiale en M4 : =SI(A4=0;0;SI(M4>0;M4;AUJOURDHUI()))

    comme tu utilises la référence M4 dans une formule de la cellule M4, ça crée
    une référence circulaire ! ce n'est pas bon : dans un classeur Excel correct,
    il doit y avoir aucune référence circulaire !

    ta formule initiale en N4 : =SI(A4=0;0;SI(N4>0;N4;MAINTENANT()))

    comme tu utilises la référence N4 dans une formule de la cellule N4, ça crée
    une référence circulaire ! donc idem : ce n'est pas bon.

    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

    ci-dessus, je viens de t'indiquer que ce n'est pas bon car tes 2 formules créent
    des références circulaires ; ce n'est pas bon non plus pour ces raisons :

    quand ça écrit la date ou l'heure, c'est fait par la formule, et la valeur changera
    lors de la prochaine ouverture de ton classeur initial ; par exemple, tes dates
    actuelles au 26/06/2023 deviendront demain : 27/06/2023 ; les heures aussi
    changeront : heures où tu ouvres le classeur Excel !

    un de ces tels changements peut être fait parfois immédiatement, parfois suite à
    une réévaluation de la formule ; exemple : dans ton classeur initial, sélectionne
    N14 ; appuie sur la touche F2 puis sur la touche Entrée : l'heure change.

    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

    solution : écrire « en dur » les dates et heures ; c'est-à-dire que les dates et heures
    ne doivent pas être mises par des formules ! il faut que les cellules en colonnes M
    et N contiennent des valeurs, pas des formules !

    c'est pour cela que j'ai supprimé toutes tes formules de M4:N15 ; ce que tu vois
    sont des valeurs de dates et heures ; si nécessaire, je te laisse les corriger.

    comment faire pour les nouvelles dates et heures ? exemple pour la ligne 15 :
    en A15, saisis par exemple 6 ➯ en M15 et N15, ça écrit automatiquement les
    valeurs de date et heure« en dur » ; bien sûr, la ligne devient verte (MFC).

    la cellule active est A15 ; appuie sur la touche Suppression pour effacer le 6
    ➯ ça vide la cellule A15, et aussi les 2 cellules M15 et N15 ; la couleur de la
    ligne est de nouveau celle d'une ligne vierge (MFC).

    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

    ce que je viens de décrire est fait grâce au VBA : langage de programmation des
    applications Microsoft Office (dont Excel) ; VBA = Visual Basic for Application ;
    en VBA, on écrit des macros (sub ou function = sous-programme ou fonction).

    ton fichier initial avait l'extension .xlsx ; un fichier .xlsx ne peut pas contenir de
    macros ; c'est pour ça que j'ai converti ton fichier initial en fichier .xlsm : cette
    extension correspond à ce type de fichier :

    « Classeur Excel (prenant en charge les macros) »

    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

    fais Alt F11 ➯ fenêtre "Microsoft Visual Basic pour Applications" ; pour abréger,
    on dit que c'est « l'Éditeur Visual Basic » ; ici, sens de « éditer » = « modifier » ;
    car dans cette fenêtre, c'est possible de créer et modifier un code VBA.

    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

    côté droit, tu peux voir mon code VBA de Feuil3 (Contact) :

    Private Sub Worksheet_Change(ByVal Target As Range)
      With Target
        If .CountLarge > 1 Then Exit Sub
        If .Column > 1 Then Exit Sub
        If .Row < 4 Then Exit Sub
        If .Value = "" Then .Offset(, 12).Resize(, 2) = Empty: Exit Sub
        .Offset(, 12) = Date: .Offset(, 13) = Time
      End With
    End Sub

    c'est un code événementiel, qui est exécuté lors de cet événement :
    changement dans la feuille de calcul ; ceci car le nom de la sub est
    Worksheet_Change.

    Exit Sub = quitter la sub ; on quitte la sub :

    * si la sélection comporte plus d'une cellule (test selon .CountLarge) ; donc la
    suite du code sera exécutée seulement si une seule cellule est sélectionnée ;
    quand il n'y a pas de sélection de plusieurs cellules, c'est la cellule active qui
    est la sélection (donc : une seule cellule).

    * si le n° colonne est > à 1 ➯ on quitte la sub si on n'est pas en colonne A ;
    donc la suite du code est exécutée seulement si on est en colonne A ;
    c'est le test selon .Column.

    * si le n° ligne est < à 4 ➯ on quitte la sub si on est au-dessus de la ligne 4 ;
    c'est car ta ligne d'en-têtes est la ligne n° 3, et tes lignes de données sont
    juste en dessous, à partir de la ligne n° 4 ; c'est le test selon .Row.

    * si la cellule est vide (test .Value = "") ; attention : juste avant de quitter la sub,
    c'est cette ligne qui va effacer la date et l'heure si on supprime la valeur de la
    colonne A (exemple : quand tu avais effacé le 6 de A15, ça avait effacé aussi
    la date de M15 et l'heure de N15)
    .

    la ligne « .Offset(, 12) = Date: .Offset(, 13) = Time » est celle qui écrit « en dur »
    la date et l'heure actuelles quand tu saisis une valeur en colonne A (et sous la
    ligne 3)
     ; comme ce sont des valeurs qui sont écrites en colonnes M et N, les
    dates et heures seront inchangées quand tu ouvriras ton classeur plus tard :
    demain, ou après-demain, ou dans un mois, ou encore plus tard.

    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

    comme tu as vu est placé mon code VBA, fais Alt F11 pour retourner sur
    la fenêtre habituelle d'Excel.

    ----------------------------------------------------------------------------------------------------------------

    si besoin, tu peux demander plus d'infos ou explications.  :)

    rhodo

    rhodo Posté le 26 juin 2023, 23:48
    par rhodo
    0

    Bonjour

    Voila ce que je voulais faire pour (datte et heure) que cela donne en cellule (M) la datte du jour d’écriture et (N) heure la garde en mémoire.   Et pour macro ??? Je ne connais pas du tout en vba car (sur certain cite  me dise pas de macro cela fait ralentir le pc et beaucoup de plantage.  Et mois j’ais commencer sur Excel il y a plus 1 ans (autodidacte) Jais plusieurs petit travaux dessus  Et cela me plais donc je cherche  Merci pour ces conseilles.   j’ais fait ceci en cellule A15 mais cela ne change pas   =SI(A4=0;0;SI(A4>0;M4;MAINTENANT())) mais rien ne fait il reste en datte (26)   (A4 sup a 0 Alor donne datte  en M)  =SI(A4=0;0;SI(A4>0;M4;AUJOURDHUI()))   A4 sup a 0 Alor donne heure  en N

    Pour les conditions cela me vas merci

    Cordialement.  https://www.cjoint.com/c/MFBjTSz4nHs


    Posté le 27 juin 2023, 11:46
    par serge
    0

    Je viens de faire cela dans une autre feuille pour essais  en cellule C1=SI(A1=0;0;SI(A1>0;AUJOURDHUI())) cela fonctionne  mais quand  A1 vide me rend ceci en C1  00/01/1900 


    Posté le 27 juin 2023, 12:15
    par serge
    0

    Bonjour serge,

    tu as écrit : « Pour les conditions cela me va merci »

    il me semble que tu parles des règles de MFC ; donc c'est OK.  :)

    ------------------------------------------------------------------------------------------------------------------------------

    tu as écrit que tu as lu sur certains sites :

    « pas de macro, cela fait ralentir le pc et il y a beaucoup de plantages ».

    VBA est rapide si tu as un PC performant et si le code VBA est correct ; mais si le code VBA
    est mal écrit, il peut y avoir des plantages ou une exécution lente.

    -------------------------------------------------------------------------------------------------------------------------------

    pour éviter que ta formule retourne 00/01/1900, tu dois l'écrire ainsi :
    =SI(ESTVIDE(A1);"";AUJOURDHUI())

    -------------------------------------------------------------------------------------------------------------------------------

    version v3https://www.cjoint.com/c/MFCgy1vfkm0

    c'est un classeur .xlsx sans VBA, donc sans macros (comme ton 1er classeur initial).

    formule en M4 : =SI(ESTVIDE(A4);"";AUJOURDHUI())

    formule en N4 : =SI(ESTVIDE(A4);"";MAINTENANT())

    (ces 2 formules ont été étendues automatiquement
    vers le bas car on est dans un tableau structuré)

    j'ai donc fait comme tu veux : avec des formules, et sans VBA ; mais tu verras
    que ça ne pourra pas aller, car demain, les dates & heures auront changé.  :(

    rhodo

    rhodo Posté le 28 juin 2023, 00:06
    par rhodo
    0

    @serge

    relis tout mon post précédent, car je l'ai beaucoup modifié.

    je te laisse essayer le fichier de la version v3, mais tu dois l'essayer aussi
    DEMAIN ou APRÈS-DEMAIN avant de voir si ça te convient ou non.  ;)

    si ça ne va pas te convenir, alors essaye de nouveau la version v2,
    c'est-à-dire mon classeur .xlsm avec code VBA.

    au cas où tu as en haut d'écran un message sur fond jaune qui dit que
    les macros sont désactivées, alors tu dois activer les macros.

    (regarde sur internet comment le faire)

    rhodo

    rhodo Posté le 28 juin 2023, 08:35
    par rhodo
    0

    Bonjour  j'ais vus cela sur You tube   option/formule/ j'ais coché la case Activer le calcul itératif  avec mes formule.   Avant.  =SI(A4=0;0;SI(M4>0;M4;AUJOURDHUI()))  =SI(A4=0;0;SI(N4>0;N4;MAINTENANT()))   Après.  =SI(A4<>0;SI(M4=0;AUJOURDHUI();M4);)   =SI(A4<>0;SI(N4=0;MAINTENANT();N4);)  et cela ma garder en mémoire de l'écriture de la veille (28/02023)-(19:05)  Les deux formule fonctionne.(essais sur deux feuilles différente)

    Quand pensé-vous?

    Cordialement


    Posté le 29 juin 2023, 13:10
    par serge
    0

    Bonsoir serge,

    tu as écrit : « Les deux formule fonctionne.(essais sur deux feuilles différente) »

    si ça marche comme tu veux et que ça te convient, alors c'est le principal.  :)

    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

    je ne reviendrai plus sur ce sujet ; si tu as besoin d'autre chose, tu devras créer
    un nouveau sujet.

    raison 1 : normalement : 1 sujet = 1 question.

    raison 2 : à cause de la pollution du site par les spammeurs, ce présent sujet est
    maintenant en page 6 ; donc pour retrouver ce sujet, il faut passer 5 pleines pages
    de spams ! (il n'y a pas de moyen d'accéder directement à la page 6, sans devoir
    faire défiler les pages de spams qui précèdent)

    -------------------------------------------------------------------------------------------------------------------

    normalement, l'Administrateur de ce site devrait supprimer tous les sujets de spams
    qui sont déjà passés ainsi que les sujets de spams qui vont venir ; mais je crois que
    l'Administrateur s'est désintéressé de son site : il ne vient plus dessus ! résultat :
    tous les spammeurs en profitent !  :(

    actuellement, ce forum Excel est devenu un forum de spams plus qu'un forum
    où on traite de sujets Excel !  :(

    perso, je suis contre tous les sujets de spams (quelle que soit leur langue).

    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

    normalement, l'Administrateur de ce site devrait aussi supprimer tous les comptes
    des spammeurs qui se sont inscrit sur ce site, et bloquer leur adresse IP.

    rhodo

    rhodo Posté le 29 juin 2023, 23:40
    par rhodo
    0

    Merci tout de même pour l’aide que vous m’avait donnée et tout ces conseille

    Cordialement


    Posté le 30 juin 2023, 11:07
    par serge

    Si vous n'êtes pas inscrit sur le site, vous pouvez poster librement (en tant qu'invité).
    Pour cela, indiquez un pseudonyme (nom d'utilisateur) et une adresse email :