Somme si la selection dans une plage donné vb

Résolu
gnioler Messages postés 83 Date d'inscription   Statut Membre Dernière intervention   -  
 gnioler -
Bonjour,



je suis a la recherche de la programation vba pour

faire une somme de cellules selectioner uniquement si ces cellules sont dans les colones d;e;f;g et les lignes 29 a 62

21 réponses

  • 1
  • 2
  1. lermite222 Messages postés 9042 Statut Contributeur 1 199
     
    Bonjour,
    Et comment tu fait la sélection des cellules ?.
    Où doit être le résultat ?
    A+
    Si tu te cognes à un pot et que ça sonne creux, c'est pas forcément le pot qui est vide. ;-)(Confucius)
    NOTE : Je ne répond pas aux MP pour les questions techniques.
    0
  2. lermite222 Messages postés 9042 Statut Contributeur 1 199
     
    Peut-être que cette solution te conviendras ?
    Cliquer sur une cellule de la plage la colorie en rouge, recliquer dessus la remet à la couleur par défaut.
    Le total des cellules rouge s'inscrit automatiquement en A1
    A coller dans le code de la feuille
    Private Sub Worksheet_SelectionChange(ByVal Target As Range)  
    Dim cel As Range, Total As Single  
        If Target.Count > 1 Then Exit Sub  
        If Not Intersect(Target, [D29:G62]) Is Nothing Then  
            If Target.Interior.Color = vbRed Then  
                Target.Interior.ColorIndex = -4142  
            Else  
                Target.Interior.Color = vbRed  
            End If  
            Total = 0  
            For Each cel In [D29:G62]  
                If cel.Interior.Color = vbRed Then  
                    Total = Total + cel.Value  
                End If  
            Next cel  
            [A1] = Total  
        End If  
    End Sub

    Il serait plus simple de mettre un formule en A1 mais suis pas fort en formule Excel et laisse ce soins à un autre intervenant.
    Si tu te cognes à un pot et que ça sonne creux, c'est pas forcément le pot qui est vide. ;-)(Confucius)
    NOTE : Je ne répond pas aux MP pour les questions techniques.
    0
  3. gnioler Messages postés 83 Date d'inscription   Statut Membre Dernière intervention   3
     
    bonjour
    je pense que la formule dont j'ai besoin est beaucoup plus courte car en fait
    j'ai deja une macro de calcul complete sur plusieurs ligne, je veux juste avant tous ca inseré 3 ligne de macro pour dire si la selection que j'ai faite avec ma souris est dans la plage D29:G62 avec un minimum de 2 ligne et 4 colones alors j'execute tous le reste
    j'ai essayer d'integrer

    If Not Intersect(Target, [D29:G62]) Is Nothing Then
    If Intersect(Target, [D29:G62]) Then
    end if

    mais j'ai du faire une erreur
    0
  4. lermite222 Messages postés 9042 Statut Contributeur 1 199
     
    Je ne pense pas pouvoir faire cela en "trois lignes" si tu trouve tant mieux pour toi, mais si ça t'intéresse avec quelque lignes en plus...
    Private Sub Worksheet_SelectionChange(ByVal Target As Range)  
    Dim cel As Range, S() As String  
        If Not Intersect(Target, [D29:G62]) Is Nothing Then  
            If Target.Count < 8 Then Exit Sub 'Y a moins de 8 cellules sélectionnées  
            S = Split(Target.Address, ":")  
            If Target.Column <> 4 Or Range(S(1)).Column <> 7 Then Exit Sub 'pour avoir 4 colonnes ça doit commencer en D  et finir en G
            'ICI les conditions sont remplies  
            'et si tout le reste c'est la somme de ces cellules le plus simple c'est  
            [A1] = 0 'pour exemple en A1  
            For Each cel In Target  
                [A1] = [A1] + cel  
            Next cel  
        End If  
    End Sub


    A+
    Si tu te cognes à un pot et que ça sonne creux, c'est pas forcément le pot qui est vide. ;-)(Confucius)
    NOTE : Je ne répond pas aux MP pour les questions techniques.
    0
  5. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  6. gnioler
     
    bonjour

    merci beaucoup
    et désolé mais 3 ligne était une expression je débute en VBA
    faut pas m'en vouloir

    j'essaye et je vous tient au courant
    0
  7. eriiic Messages postés 24581 Date d'inscription   Statut Contributeur Dernière intervention   7 281
     
    Bonjour tout le monde,

    Lermitte, j'ai l'impression que tu ne testes pas si la sélection dépasse la ligne 62.

    Autre proposition :
    Private Sub Worksheet_SelectionChange(ByVal Target As Range)  
        If Target.Column <> 4 Or Target.Columns.Count <> 4 Then Exit Sub  
        If Target.Row < 29 Or Target.Rows.Count < 2 Or Target.Row + Target.Rows.Count - 1 > 62 Then Exit Sub  
        ' ton programme  
        [A28] = Application.Sum(Target)
    End Sub 

    eric
    0
    1. lermite222 Messages postés 9042 Statut Contributeur 1 199
       
      Salut Eric,
      Exact, j'ai pas tester les limites row.
      Mais j'ai mis
      If Target.Count < 8 Then Exit Sub 'Y a moins de 8 cellules
      pour éviter de faire les autre tests si cette conditions n'est pas remplie, une habitude de quand les PC étaient très lent..
      Elle peut remplacer - Or Target.Rows.Count < 2
      A+
      PS: Je connaît aussi Rows.Count et .Columns.Count mais je ne sais pas ce qui s'est passé Excel n'a pas voulu les prendre.
      0
  8. gnioler Messages postés 83 Date d'inscription   Statut Membre Dernière intervention   3
     
    merci beaucoup

    je viens d'essayer la formule de eric
    mais ca ne marche pas car il me souligne la 2eme ligne

    je ne comprend pas ce que veut dire la ligne
    [A28]=application.sum(target)
    et les numero utilisé dans la 2/3/ et 4eme ligne c'est le numero des colones et cellules mais si ma colonne D et E sont fusioné comment on les compte
    0
  9. gnioler Messages postés 83 Date d'inscription   Statut Membre Dernière intervention   3
     
    rebonjour a tous les 2 j'ai essayer vos 2 macro seule
    ca ne marche pas
    de plus quand je les écrit tel quel elle disparaisse je ne les trouve plus dans macro, afficher les macro, pourquoi?

    merci pour vos reponse
    0
  10. eriiic Messages postés 24581 Date d'inscription   Statut Contributeur Dernière intervention   7 281
     
    Re,

    ca ne marche pas
    de plus quand je les écrit tel quel elle disparaisse je ne les trouve plus dans macro, afficher les macro, pourquoi?

    Parce que tu ne fais pas bien, impossible de savoir sans être devant ton micro.

    je ne comprend pas ce que veut dire la ligne
    [A28]=application.sum(target)
    met la somme d'une sélection valide en A28

    un exemple fonctionnel :
    http://www.cijoint.fr/cjlink.php?file=cj201110/cijEzfwE9y.xls
    les fusions de cellules sont à éviter au maximum !!!!
    Ici en l'occurence ça ne gène pas....

    eric
    0
  11. gnioler Messages postés 83 Date d'inscription   Statut Membre Dernière intervention   3
     
    re

    si si je suis devant mon micro
    mais désolé je debute alors je ne comprend pas tout

    l'exemple fonctionel ne s'ouvre pas le lien est bloqué

    par contre pourquoi la macro disparait quand j'ecrit private devant et quand je l'enleve je la retrouve
    0
    1. eriiic Messages postés 24581 Date d'inscription   Statut Contributeur Dernière intervention   7 281
       
      cijoint.fr merdouille un peu parfois.
      J'étais sur un autre micro et je ne peux pas l'uploader sur un autre site, re-essaie un peu plus tard.

      par contre pourquoi la macro disparait quand j'ecrit private devant et quand je l'enleve je la retrouve
      Tu sais que tu si tu mets ton curseur sur une instruction et que tu fais F1 tu as une excellente aide ?

      eric
      0
  12. lermite222 Messages postés 9042 Statut Contributeur 1 199
     
    RE?
    je crois que j'ai compris !!!
    Dans Excel >> Tu tape Alt+F11
    L'IDE de visual basic s'ouvre
    A gauche tu à la fenêtre de l'explorateur de projet avec les noms de tes feuilles, si tu ne le trouve pas tu tape Ctrl+R
    Tu double clic sur le nom de la feuille concernée.
    Dans la fenêtre qui s'ouvre tu fais un copier/coller de la macro d'Eric
    Tu ferme l'IDE (la croix rouge)
    Et GO... tu test
    Et oublie pas de sauver Excel
    Si tu te cognes à un pot et que ça sonne creux, c'est pas forcément le pot qui est vide. ;-)(Confucius)
    NOTE : Je ne répond pas aux MP pour les questions techniques.
    0
  13. lermite222 Messages postés 9042 Statut Contributeur 1 199
     
    Pour réactualiser, tu à lu mon poste précédant pendant que je le modifiait.
    Et j'ajouterais .. TU NE FAIT RIEN D'AUTRE
    Si tu te cognes à un pot et que ça sonne creux, c'est pas forcément le pot qui est vide. ;-)(Confucius)
    NOTE : Je ne répond pas aux MP pour les questions techniques.
    0
  14. gnioler
     
    comment fait on pour l'executer une fois que j'ai selectioner mes cellules avec la souris
    0
  15. lermite222 Messages postés 9042 Statut Contributeur 1 199
     
    Rien, c'est automatique
    Tu devrais avoir le total des cellules sélectionnées dans la cellule A28
    0
  16. gnioler
     
    ha ok
    je vais essayer
    par contre il me le faut pas en automatique car j'ai crée un bouton pour cliquer dessus

    qu'est ce qu'il faut que j'enleve dans la formule pour qu'il ne soit pas automatique
    0
  17. eriiic Messages postés 24581 Date d'inscription   Statut Contributeur Dernière intervention   7 281
     
    essaie avec ça (non testé mais ça ne devrait pas être trop loin...)
    Sub sumSel() 
        If Selection.Column <> 4 Or Selection.Columns.Count <> 4 Then Exit Sub   
        If Selection.Row < 29 Or Selection.Rows.Count < 2 Or Selection.Row + Selection.Rows.Count - 1 > 62 Then Exit Sub   
        ' ton programme   
        [A28] = Application.Sum(Selection) 
    End Sub

    eric
    0
  18. lermite222 Messages postés 9042 Statut Contributeur 1 199
     
    Y a quoi dans le code de ton bouton ?
    Montre le code
    Si tu te cognes à un pot et que ça sonne creux, c'est pas forcément le pot qui est vide. ;-)(Confucius)
    NOTE : Je ne répond pas aux MP pour les questions techniques.
    0
  19. gnioler
     
    ca y est ca marche
    0
    1. eriiic Messages postés 24581 Date d'inscription   Statut Contributeur Dernière intervention   7 281
       
      oui, à mettre au début pour sortir de la macro si selection incorrecte.
      eric
      0
    2. eriiic Messages postés 24581 Date d'inscription   Statut Contributeur Dernière intervention   7 281
       
      évite de modifier les messages après une réponse, sinon on ne comprend plus... ;-)
      0
  • 1
  • 2