Somme si la selection dans une plage donné vb

Résolu/Fermé
gnioler Messages postés 88 Date d'inscription mercredi 5 octobre 2011 Statut Membre Dernière intervention 7 janvier 2015 - 26 oct. 2011 à 13:00
 gnioler - 27 oct. 2011 à 22:43
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
A voir également:

21 réponses

lermite222 Messages postés 8702 Date d'inscription dimanche 8 avril 2007 Statut Contributeur Dernière intervention 22 janvier 2020 1 190
Modifié par lermite222 le 26/10/2011 à 16:31
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
lermite222 Messages postés 8702 Date d'inscription dimanche 8 avril 2007 Statut Contributeur Dernière intervention 22 janvier 2020 1 190
Modifié par lermite222 le 26/10/2011 à 17:26
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
gnioler Messages postés 88 Date d'inscription mercredi 5 octobre 2011 Statut Membre Dernière intervention 7 janvier 2015 3
26 oct. 2011 à 23:02
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
lermite222 Messages postés 8702 Date d'inscription dimanche 8 avril 2007 Statut Contributeur Dernière intervention 22 janvier 2020 1 190
Modifié par lermite222 le 27/10/2011 à 02:04
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

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
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
eriiic Messages postés 24569 Date d'inscription mardi 11 septembre 2007 Statut Contributeur Dernière intervention 28 décembre 2023 7 212
Modifié par eriiic le 27/10/2011 à 10:59
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
lermite222 Messages postés 8702 Date d'inscription dimanche 8 avril 2007 Statut Contributeur Dernière intervention 22 janvier 2020 1 190
Modifié par lermite222 le 27/10/2011 à 15:08
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
gnioler Messages postés 88 Date d'inscription mercredi 5 octobre 2011 Statut Membre Dernière intervention 7 janvier 2015 3
27 oct. 2011 à 15:15
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
gnioler Messages postés 88 Date d'inscription mercredi 5 octobre 2011 Statut Membre Dernière intervention 7 janvier 2015 3
27 oct. 2011 à 16:02
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
eriiic Messages postés 24569 Date d'inscription mardi 11 septembre 2007 Statut Contributeur Dernière intervention 28 décembre 2023 7 212
27 oct. 2011 à 16:51
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
gnioler Messages postés 88 Date d'inscription mercredi 5 octobre 2011 Statut Membre Dernière intervention 7 janvier 2015 3
27 oct. 2011 à 17:03
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
eriiic Messages postés 24569 Date d'inscription mardi 11 septembre 2007 Statut Contributeur Dernière intervention 28 décembre 2023 7 212
27 oct. 2011 à 17:44
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
lermite222 Messages postés 8702 Date d'inscription dimanche 8 avril 2007 Statut Contributeur Dernière intervention 22 janvier 2020 1 190
Modifié par lermite222 le 27/10/2011 à 18:58
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
ok merci je vous tient au courant
0
lermite222 Messages postés 8702 Date d'inscription dimanche 8 avril 2007 Statut Contributeur Dernière intervention 22 janvier 2020 1 190
Modifié par lermite222 le 27/10/2011 à 19:02
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
comment fait on pour l'executer une fois que j'ai selectioner mes cellules avec la souris
0
lermite222 Messages postés 8702 Date d'inscription dimanche 8 avril 2007 Statut Contributeur Dernière intervention 22 janvier 2020 1 190
27 oct. 2011 à 19:28
Rien, c'est automatique
Tu devrais avoir le total des cellules sélectionnées dans la cellule A28
0
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
eriiic Messages postés 24569 Date d'inscription mardi 11 septembre 2007 Statut Contributeur Dernière intervention 28 décembre 2023 7 212
Modifié par eriiic le 27/10/2011 à 19:47
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
lermite222 Messages postés 8702 Date d'inscription dimanche 8 avril 2007 Statut Contributeur Dernière intervention 22 janvier 2020 1 190
Modifié par lermite222 le 27/10/2011 à 19:54
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
ca y est ca marche
0
eriiic Messages postés 24569 Date d'inscription mardi 11 septembre 2007 Statut Contributeur Dernière intervention 28 décembre 2023 7 212
27 oct. 2011 à 20:12
oui, à mettre au début pour sortir de la macro si selection incorrecte.
eric
0
eriiic Messages postés 24569 Date d'inscription mardi 11 septembre 2007 Statut Contributeur Dernière intervention 28 décembre 2023 7 212
27 oct. 2011 à 22:00
évite de modifier les messages après une réponse, sinon on ne comprend plus... ;-)
0
merci beaucoup
0