Problème de formule excel

luciano777 -  
Raymond PENTIER Messages postés 58211 Date d'inscription   Statut Contributeur Dernière intervention   -
Bonjour,
j'aimerais savoir comment empêcher la saisie des cellules d'une plage à remplir de nombre entier en fonction de la saisie d'une autre. par exemple j'ai la plage C3 à E7 à remplir de nombre entier uniquement. et je voudrais que l'utilisateur puisse tout d'abord fournir la date à la cellule B2 avant le remplissage de cette plage au cas contraire qu'un message lui soit adresser pour avertissement.
Merci d'avance pour votre aide qui me serait très capitale !!!

6 réponses

  1. Nyctaclope Messages postés 5295 Date d'inscription   Statut Membre Dernière intervention   1 254
     
    Bonjour

    Pas très indiqué ici de poster en doublon ...
    http://www.commentcamarche.net/forum/affich-27369064-probleme-de-formule-excel#p27369064

    Une solution, parmi d'autres : masquer tes colonnes de saisie tant que B2 est vide ..
    Un exemple de macro, à adapter :
    http://www.libellules.ch/phpBB2/excel-masquer-colonnes-selon-valeurs-d-une-cellule-t36138.html

    Ou encore :
    Un message d'erreur bien visible quelque part, selon que B2 est vide ou non, mais cela n'empêchera pas de tenter la saisie ..

    Mais attend d'autres réponses ..

    A+
    Nyctaclope

    Le plus joli des poèmes de la mathématique : e^(i.PI)=i^2
    trois nombres "sacrés" d'horizons différents qui se donnent la main ...
    0
  2. pijaku Messages postés 13513 Date d'inscription   Statut Modérateur Dernière intervention   2 773
     
    Bonjour,

    J'utiliserai une macro événementielle.

    Pour cela, clic droit sur l'onglet de la feuille concernée / visualiser le code,

    Copier-coller ce code dans la fenêtre qui vient de s'ouvrir :
    Private Sub Worksheet_Change(ByVal Target As Range)
    Dim plage As Range
    
    Set plage = Range("C3:E7")
    If Intersect(plage, Target) Is Nothing Then Exit Sub
    If Range("B2") = "" Then
        Application.EnableEvents = False
        MsgBox "La saisie de la date en B2 est obligatoire.", vbCritical
        Target = ""
        Range("B2").Select
        Application.EnableEvents = True
    End If
    End Sub

    fermer la fenêtre visual basic editor et tester....
    0
  3. via55 Messages postés 14391 Date d'inscription   Statut Membre Dernière intervention   2 759
     
    Bonjour

    Selectionner la plage C3: E7
    Accueil Validation de données Personnalisé et entrer la formule
    =$D$5>0
    Dans Alerte d'erreur mettre un message du style" D5 doit d'abord être renseigné"

    Cdlmnt
    0
  4. Raymond PENTIER Messages postés 58211 Date d'inscription   Statut Contributeur Dernière intervention   17 480
     
    La procédure "Validation des données" ne permet de fixer qu'UNE SEULE contrainte pour une cellule donnée.
    Je te propose donc de l'utiliser pour limiter la saisie à des nombres entiers, en choisissant le critère Autoriser/Nombre entier.
    Et tu utiliseras la "Mise en forme conditionnelle" pour vérifier si B2 est renseignée.

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

    Cordialement.
    C'est bien, la retraite ! Surtout aux Antilles ... :-)
    ☻ Raymond ♂
    0
    1. via55 Messages postés 14391 Date d'inscription   Statut Membre Dernière intervention   2 759
       
      Bonjour Raymond

      Tu as parfaitement raison, j'avais completement zappé la condition d'avoir des nombres entiers seulement

      Cdlmnt
      0
    2. via55 Messages postés 14391 Date d'inscription   Statut Membre Dernière intervention   2 759
       
      Par contre je ne suis pas d'accord avec UNE SEULE CONTRAINTE !

      On peut parfaitement mettre plusieurs conditions à Validation de données

      A partir de ton exemple la formule
      =ET($B$2<>"";C3>0;C3<10000)
      dans Validation Personnalisé empêche bien de rentrer une valeur si B2 est vide ou si la valeur entrée n'est pas comprise entre 1 et 9999

      Cdlmnt
      0
    3. Raymond PENTIER Messages postés 58211 Date d'inscription   Statut Contributeur Dernière intervention   17 480
       
      Oui, via55, tu as peut-être raison sur le principe ; encore que je ne connaisse cette technique que pour la Mise en forme conditionnelle !
      En essayant ta formule (et en enlevant la MFC), cela ce fonctionne pas chez moi ... as-tu testé ?
      https://www.cjoint.com/c/CCqaxtQw66G

      Salut.
      0
    4. via55 Messages postés 14391 Date d'inscription   Statut Membre Dernière intervention   2 759
       
      Oui Raymond j'ai testé et ça marche
      j'ai simplement oublié de préciser qu'il fallait décocher Ignorer si vide; mea culpa !
      https://www.cjoint.com/?3CqaMhwWxWt

      Salutations, @+
      0
  5. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  6. Raymond PENTIER Messages postés 58211 Date d'inscription   Statut Contributeur Dernière intervention   17 480
     
    Merci beaucoup, via55, de ce rappel au paramètre "Ignorer si vide", que je n'ai guère eu l'occasion d'utiliser dans les pourtant nombreux classeurs que j'ai montés.
    La formule de ventilation à utiliser est donc finalement
    =ET($B$2<>"";C3=ENT(C3))
    et il n'y a plus besoin de Mise en forme conditionnelle ...

    J'espère que luciano777 aura maintenant pleine satisfaction ?
    ... d'autant que j'ai inclus des messages de saisie et d'erreur explicites.
    https://www.cjoint.com/c/CCqbHdXwiuF

    Très cordialement.

    C'est bien, la retraite ! Surtout aux Antilles ... :-)
    ☻ Raymond ♂
    0
    1. via55 Messages postés 14391 Date d'inscription   Statut Membre Dernière intervention   2 759
       
      Je pense aussi !

      Ta formule avec ENT est meilleure que la mienne puisqu'elle accepte tous les entiers

      Dans un autre contexte on pourrait même imaginer une validation restreinte à des valeurs bien précises en combinant des OU et ET , pour n'accepter par exemple à la fois que des nombres entre 1 et 20 ou du texte limité à "O" ou "N" etc .. mais là je n'ai pas encore testé !

      Bien cordialement
      0
  7. luciano777
     
    salut, j'étais absent, merci de votre aide cela marche parfaitement sur une cellule. j'aimerais savoir si ceci peut être possible sur plusieurs cellules d'une plage de données car la recopie sur les autres cellules m'est un peu trop. merci de cette solution elle m'a été d'une grande opportunité

    belle soirée à vous deux Raymond & via55
    0
    1. Raymond PENTIER Messages postés 58211 Date d'inscription   Statut Contributeur Dernière intervention   17 480
       
      Je n'ai pas compris ta nouvelle question :
      qu'est-ce qui devrait "être possible sur plusieurs cellules" ?
      0
    2. luciano777
       
      salut Raymond
      si à partir du contenu d'une cellule hors d'une plage je peux appliquer la même condition à l'ensemble des cellules qui constituent cette plage sans toutefois procéder cellule par cellule?
      0
    3. Raymond PENTIER Messages postés 58211 Date d'inscription   Statut Contributeur Dernière intervention   17 480
       
      Je ne comprends pas davantage ...
      Voudrais-tu tout simplement reprendre ton exposé initial du 15 mars à 15:05 en intégrant tes nouveaux besoins ?
      0