Programmation macro VBA excel
Résolu/Fermé
A voir également:
- Programmation macro VBA excel
- Telecharger macro convertir chiffre en lettre excel - Télécharger - Tableur
- Liste déroulante excel - Guide
- Si et excel - Guide
- Word et excel gratuit - Guide
- Déplacer une colonne excel - Guide
5 réponses
gbinforme
Messages postés
14946
Date d'inscription
lundi 18 octobre 2004
Statut
Contributeur
Dernière intervention
24 juin 2020
4 716
11 janv. 2008 à 18:01
11 janv. 2008 à 18:01
bonjour
Tu n'as pas besoin de macro pour cela, tu mets en C1 cette formule matricielle à valider par ctrl+majuscule+entrée simultanées
ensuite avec la petite croix en bas à droite, tu tires ta formule vers le bas.
Si tu mets ta formule sur une autre ligne tu mets ici =A1 =A et ton n° de ligne.
Tu n'as pas besoin de macro pour cela, tu mets en C1 cette formule matricielle à valider par ctrl+majuscule+entrée simultanées
=SI(B1>(SOMME(($A$1:$A$65535=A1)*($B$1:$B$65535))/2);"urgent";"non urgent")
ensuite avec la petite croix en bas à droite, tu tires ta formule vers le bas.
Si tu mets ta formule sur une autre ligne tu mets ici =A1 =A et ton n° de ligne.
bonjour merci d'avoir répondu
le truc c'est que j'ai des tableau de mille lignes donc voila pourquoi je voulais faire une macro
je pensais faire une première fois le parcours de la colonne ou je sommerais la valeur de toutes les references identiques
et un deuxième fois ou j'attribuerais les priorités
With wsExcel
For i= 1 To NbLigne
Select Case .Cells(i, 1).Value
Case Is = "pain"
somme1 = somme1 + .Cells(i, 2).Value
Case Is = "beurre"
somme2 = somme2 + .Cells(i, 2).Value
Case Is = "sel"
somme3 = somme3 + .Cells(i, 2).Value
Case Else
somme4 = somme4 + .Cells(i, 2).Value
End Select
Retour = MsgBox(somme1)
Retour = MsgBox(somme2)
Retour = MsgBox(somme3)
Voila mon code mais quand je regarde les sommes elles sont toutes a zeros je comprend pas
j'ai l'impression qui ne prend pas les valeurs dans les cases
le truc c'est que j'ai des tableau de mille lignes donc voila pourquoi je voulais faire une macro
je pensais faire une première fois le parcours de la colonne ou je sommerais la valeur de toutes les references identiques
et un deuxième fois ou j'attribuerais les priorités
With wsExcel
For i= 1 To NbLigne
Select Case .Cells(i, 1).Value
Case Is = "pain"
somme1 = somme1 + .Cells(i, 2).Value
Case Is = "beurre"
somme2 = somme2 + .Cells(i, 2).Value
Case Is = "sel"
somme3 = somme3 + .Cells(i, 2).Value
Case Else
somme4 = somme4 + .Cells(i, 2).Value
End Select
Retour = MsgBox(somme1)
Retour = MsgBox(somme2)
Retour = MsgBox(somme3)
Voila mon code mais quand je regarde les sommes elles sont toutes a zeros je comprend pas
j'ai l'impression qui ne prend pas les valeurs dans les cases
bonjour merci d'avoir répondu
le truc c'est que j'ai des tableau de mille lignes donc voila pourquoi je voulais faire une macro
je pensais faire une première fois le parcours de la colonne ou je sommerais la valeur de toutes les references identiques
et un deuxième fois ou j'attribuerais les priorités
With wsExcel
For i= 1 To NbLigne
Select Case .Cells(i, 1).Value
Case Is = "pain"
somme1 = somme1 + .Cells(i, 2).Value
Case Is = "beurre"
somme2 = somme2 + .Cells(i, 2).Value
Case Is = "sel"
somme3 = somme3 + .Cells(i, 2).Value
Case Else
somme4 = somme4 + .Cells(i, 2).Value
End Select
Retour = MsgBox(somme1)
Retour = MsgBox(somme2)
Retour = MsgBox(somme3)
Voila mon code mais quand je regarde les sommes elles sont toutes a zeros je comprend pas
j'ai l'impression qui ne prend pas les valeurs dans les cases
le truc c'est que j'ai des tableau de mille lignes donc voila pourquoi je voulais faire une macro
je pensais faire une première fois le parcours de la colonne ou je sommerais la valeur de toutes les references identiques
et un deuxième fois ou j'attribuerais les priorités
With wsExcel
For i= 1 To NbLigne
Select Case .Cells(i, 1).Value
Case Is = "pain"
somme1 = somme1 + .Cells(i, 2).Value
Case Is = "beurre"
somme2 = somme2 + .Cells(i, 2).Value
Case Is = "sel"
somme3 = somme3 + .Cells(i, 2).Value
Case Else
somme4 = somme4 + .Cells(i, 2).Value
End Select
Retour = MsgBox(somme1)
Retour = MsgBox(somme2)
Retour = MsgBox(somme3)
Voila mon code mais quand je regarde les sommes elles sont toutes a zeros je comprend pas
j'ai l'impression qui ne prend pas les valeurs dans les cases
gbinforme
Messages postés
14946
Date d'inscription
lundi 18 octobre 2004
Statut
Contributeur
Dernière intervention
24 juin 2020
4 716
12 janv. 2008 à 17:46
12 janv. 2008 à 17:46
bonjour
Comme tu veux faire une macro, en voilà une qui fonctionne quelles que soient tes informations
Cependant, si tu as de nombreuses références, je doute fort que tu trouves beaucoup de références URGENT car si tu n'as que 2/3 éléments, comme dans ton exemple cela fonctionne mais au-delà, difficile de faire plus de 50%.
Tu peux facilement faire varier le niveau d'urgence " > cum / 10" par exemple sélectionnes les plus de 10%.
Comme tu veux faire une macro, en voilà une qui fonctionne quelles que soient tes informations
Option Explicit Sub priorité() Dim cum As Double Dim i As Long, l As Long For l = 1 To Range("a65536").End(xlUp).Row cum = 0 For i = 1 To Range("a65536").End(xlUp).Row If Cells(l, 1).Value = Cells(i, 1).Value Then cum = cum + Cells(i, 2).Value End If Next i If Cells(l, 2) > cum / 2 Then Cells(l, 3).Value = "URGENT" Else Cells(l, 3).Value = "non urgent" End If Next l End Sub
Cependant, si tu as de nombreuses références, je doute fort que tu trouves beaucoup de références URGENT car si tu n'as que 2/3 éléments, comme dans ton exemple cela fonctionne mais au-delà, difficile de faire plus de 50%.
Tu peux facilement faire varier le niveau d'urgence " > cum / 10" par exemple sélectionnes les plus de 10%.
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question