Valeur cellule sous conditions

Résolu
Tuline Messages postés 60 Statut Membre -  
Tuline Messages postés 60 Statut Membre -
Bonjour,
je suis bloquée sur une macro.
Je vous mets la sheet excel avec la macro ici :
https://www.cjoint.com/c/HCAoy4ScmEF

J'ai écrit dans le fichier les résultats attendus selon la valeur des cases
Merci beaucoup pour votre aide !

Bonne journée

4 réponses

  1. michel_m Messages postés 18903 Date d'inscription   Statut Contributeur Dernière intervention   3 320
     
    Bonjour

    un peu comme ça ?
    Option Explicit
    '----------------------------------------------------------------
    Private Sub Worksheet_Change(ByVal Target As Range)
    Dim Taille as string, Genre as string, Test As String
    Static Flag As Boolean
    If Target.Count > 1 Then Exit Sub
    If Intersect(Target, Range("I117,I118,I139")) Is Nothing Then Exit Sub
    'vérif si les 3 cellules sont saisies
    If Application.CountA(Range("I117,I118,I139")) < 3 Then Exit Sub

    If Flag = False Then
    Flag = True 'empeche de reparcourir la procédure _
    lors de l'affection dans F142, D43 etd
    'TON CODE.....
    ;.....
    .......
    Flag = False 'libère le blocage pour une nouvelle action
    End If

    End Sub

    1
    1. Tuline Messages postés 60 Statut Membre
       
      Ah ca marche parfaitement !! J'ai adapté mon code mais c'est parfait.
      Une dernière question :
      Je voudrais que lorsqu'on supprime la sélection des cases I117 I118 et I139
      Les cases D142 à 146 se mettent à 0
      Je ne trouve pas la solution
      Merci :)
      0
  2. michel_m Messages postés 18903 Date d'inscription   Statut Contributeur Dernière intervention   3 320
     
    Comme d'hab, cellules fusionnées en conflit avec Target.count>1!!!

    A l"avenir éviter les cellules fusionnées m^me sans VBA

    <code> 'If Target.Count > 1 Then Exit Sub SUPPRIME car cellules I à L fusionnées !!!
        If Intersect(Target, Range("I117,I118,I139")) Is Nothing Then Exit Sub
       'nettoyage si cellules I à L vides
        If Application.CountA(Range("I117,I118,I139")) = 0 Then: Range("D142:D146").ClearContents
        'vérif si les 3 cellules sont saisies
        If Application.CountA(Range("I117,I118,I139")) < 3 Then Exit Sub


    1
    1. Tuline Messages postés 60 Statut Membre
       
      Parfait ! Un grand merci !!!
      0
  3. M-12 Messages postés 1349 Statut Membre 285
     
    Bonjour

    place
    Application.EnableEvents = False ---> en début de macro

    et

    Application.EnableEvents = True --- avant le END SUB
    0
    1. Tuline Messages postés 60 Statut Membre
       
      Merci mais ca ne fonctionne toujours pas :(
      0
  4. michel_m Messages postés 18903 Date d'inscription   Statut Contributeur Dernière intervention   3 320
     
    Bonjour

    quelle(s) cellule(s) déclenchent la macro

    par ex : if not intersect(target, range("la zone de déclenchement")) is nothing then.....

    actuellement tu déclenches dès que tu effectues une saisie n'importe où dans la feuille . elle se déclenche 2 fois pour rien (I117, I118, I139)

    A mon avis, avec plusieurs saisies de départ, worksheet_change ne semble pas adapté
    0
    1. michel_m Messages postés 18903 Date d'inscription   Statut Contributeur Dernière intervention   3 320
       
      Ou alors, écris au départ une instruction qui vérifie que les 3 cellules 117, 118, 139 ne sont toutes pas vides
      0
    2. Tuline Messages postés 60 Statut Membre
       
      Bonjour
      merci mais en écrivant quoi du coup ?
      0
    3. Tuline Messages postés 60 Statut Membre
       
      C'est quand il y a une selection faite dans I117, I118 et I139 qu'elle doit se déclencher, puis s'il y a modification de ces valeurs
      0