Question pour le forum

  • Initiateur de la discussion Initiateur de la discussion br44
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

br44

XLDnaute Impliqué
bonsoir à tous ,

Voilà j'ai deux questions à vous poser concernant la mise en forme de cellules .

1ère question : Peut-on additionner des cellules au fur et a mesure quelles se copie (de manière aléatoire)?

2ème question: comment mettre une cellules en positif où négatif en fonction de la valeur d'une autres cellules ?

Exemple : j'ai rentrée la formule suivante dans ma cellule D25 :=D23-D21 ce qui me donne un résultat négatif affiché en rouge .

je voudrais que le résultat de la cellule D25 s'affiche en Bleu gras si la valeur de la cellule D23 est égal à la cellule D21 pour les résultats positif .

Vous remerciant par avance pour vos réponse je vous dis à bientôt sur se fil .Amicalement BR44
 
Re : Question pour le forum

bonsoir br44, un p'tit fichier ne serait pas de refus pour aider à comprendre car là tel que le problème est posé, quelque chose m'échappe pour ta 2ème question : si D23=D21 , ben du coup, ta cellule D25= 0 à chaque fois non ?Du coup, ta condition devient un peu bancale, non ?
 
Re : Question pour le forum

Bonsoir Grodep,le forum

Merci à toi d'avoir répondu si rapidement .

Tu as raison sur le principe ,le but étant d'arrivée à l'égalité donc "0000"

Pour le fichier je peux mais le problème est qu'il n'est pas complet d'où ma première question .

car la cellule D23 doit être alimenter sous certaine condition . mais je voulais juste savoir si il était possible de calculer des cellules copier les unes aprés les autres mais avec des addresses non chronologique .

Exemple : E12 +E8+E10 ect....

Te remerciant pour ta réponse et espérant avoir répondu clairement je te dis à plus . Amicalement BR44
 
Re : Question pour le forum

bonjour le forum ,Grodep ,

J'ai peut-être trouver la solution à ma première question . en recherchant sur le forum j'ia trouver deux macro qui servent à compter des cellules colorisées .
Voici ses macro :

Macro 1 ecrit par jacque87:
Code:
Dim plage As Range, cel as Range
Dim I as Integer, N as integer
Set plage = Range('A15') ' c'est un exemple à adapter
For Each Cel in plage
If Cel.Interior.ColorIndex = xlNone Then N=N+1
Next C
MsgBox(N)
Petite question en passant ,pourquoi N=N+1 après le then ?

Macro 2 reprise par jocelyn :
Code:
Public Function NbColor(Plage As Range, vCellcolor As Range) As Byte
Dim vColorTest As Long
Dim Compteur As Long
Dim vColorCell As Range

Compteur = 0
vColorTest = vCellcolor.Interior.Color
For Each vColorCell In Plage
If vColorCell.Interior.Color = vColorTest Then
Compteur = Compteur + 1
End If
Next vColorCell

NbColor = Compteur
End Function

Je voudrais savoir si l'on peut adapter ces macro pour obtenir le résultat suivant : Trouver toutes les cellules en bleu dans plusieurs plages et additionner les valeurs de ses cellules pour obtenir que le total final dans une autres cellules ?

exemple : Si dans la plage C12:C16 j'ai 3 trouvées cellules en bleu
1 en C12 =25,1 en C14=30 et 1en C16 =35
Puis dans autres plage E12:E16
J'ai deux cellules trouvées
C13=8 et C15 = 12

Je voudrais voir dans la cellules H18 = 110 ((25+35+30)+(8+12))<--- Détail

Si quelqu'un à une idée je suis preneur.Vous remerciant toutes et tous par avance je vous dis à plus sur se fil .Amicalement BR44
 
Re : Question pour le forum

Bonsoir br44, Le Forum,

Tu peux modifier le premier code comme suit :

Code:
Dim plage As Range, cel as Range
Dim I as Integer, N as integer
Set plage = Range("C2:C16","E12:E16")
Range("A18") = ""
For Each cel in plage
  If cel.Interior.ColorIndex = xlNone Then
    Range("A18") = Range("A18") + cel.Value
  End If
Next C

Bonne soirée et bonnes fêtes.
 
Re : Question pour le forum

bonsoir Papou Net , le forum ,

Merci à toi pour cette réponse rapide ,juste une petite question

pourquoi?


alors que la cellules de destination est H18

S'agit-il d'une erreur dans la saisie dans le code ?

En te remerciant de nouveau je te dis à plus .Amicalement Br44

Bonjour br44,

Effectivement, c'est bien une erreur (ce n'était pas pour voir si tu suivais, mais puisque c'est bien le cas, je te dis bravo) !
Il fallait bien sûr lire : H18.

Cordialement.
 
Re : Question pour le forum

Bonjour Papou-net,le forum

Merci d'avoir rèpondu .

Voilà j'ai adaper la macro a mon programme , cela à l'aire de fonctionner ,mais aucun résultat ne s'affiche . aurais-tu une idée d'où cela puisse provenir ?

J'ai placée cette macro dans le bouton "Validation facture impayer" ,de mon usf
et j'ai l'impression que cela bloque .

Je mets ci-joint mon fichier dont je t'explique en quelques mots le fonctionnement .

Il s'agit d'un fichier de suivi de facturartion . il me permets de valider le paiment de facture à la récption d'un chèques et ceci sur deux années (Année en cour +l'année précédente ) . La macro doit permettre de calculer les montant total encaisser par mois soit tout les montant en bleu dans la feuille "RECAP IMPAYER" et ceci aprés chaque validation dans l'usf .

Si tu pouvait regarder cela me rendrais service en te remerciant par avance et te souhaitant un bon réveillon je te dis à bientôt sur se fil .Amicalement BR44 .
voici le fichier sous le nom Essais 3.2 :
Cijoint.fr - Service gratuit de dépôt de fichiers
 
Re : Question pour le forum

bonsoir Papou-Net , le forum

Désolé j'ai omis de mettre la macro modifier dans le fichier joint (expédier trop vite)

Voici donc la version adaptée :
Code:
Set plage = Sheets("RECAP IMPAYER").Range("C12:C16","E12:E16","G12:G16","I12:I16")
Sheets("RECAP IMPAYER").Range("B19") = ""
For Each C In plage
  If C.Interior.ColorIndex = 5 Then
Sheets("RECAP IMPAYER"). Range("B19") = Range("B19") + C.Value
  End If
Next C

Les variables étant placées dans "OPTIONS EXPLICITE"

Milles excuses et joyeux noël a tous .Amicalement BR44
 
Re : Question pour le forum

Bonsoir à tous


Une version modifiée du code de br44 (enfant du code de Papou-net)

Code:
Sub test()
Dim plage As Range
With Sheets(1)
    Set plage = .[C12:C16,E12:E16,G12:G16,I12:I16]
    .[B19] = ""
        For Each C In plage
            .[B19] = .[B19] + (C.Interior.ColorIndex = 5) * -1
        Next C
End With
End Sub
Chez moi pas OK
Code:
Set plage = Sheets("RECAP IMPAYER").Range("C12:C16","E12:E16","G12:G16","I12:I16")

Mais ceci OK
Code:
Set plage = Sheets("RECAP IMPAYER").Range("C12:C16,E12:E16,G12:G16,I12:I16")
 
Dernière édition:
Re : Question pour le forum

Bonjour Papou-Net,Staple1600,le forum,

Merci à toi Staple1600 pour cette nouvelle version de ma macro .

Pourrais-tu me dire pourquoi tu à mis les références des cellules entrent crochet? je suppose avoir compris que cela avais pour but de remplacer le mot "RANGE" mais pour qu'elle raison ?

Si tu pouvais m'expliquer cette manipulation cela me permettrais de mieux comprendre .

Te remerciant par avance et te souhaitant un joyeux noël je te dis à plus et à bientôt ,le temps de tester . Amicalement BR44
 
Re : Question pour le forum

Re à tous

Je viens de tester ta version ,ainsi que la variable modifiée le résultat est le même je n'est pas d'affichage dans la cellule "B19" . Il n'y a pas de beug de signalé .

Je ne comprend vraiment pas pourquoi il y a se problème ?

Si vous avez un peut de temps pour regarder ce serais génial .

Merci d'avance pour tout et un bon Noël .Amicalement BR44
 
Re : Question pour le forum

Bonjour


C'est juste un choix d'écriture que je privilégie parfois

Range("A1") peut s'écrire [A1]

L'utilisation des crochets équivaut à la méthode Evaluate

J'ai testé le code que j'ai précédemment posté

Si des cellules appartenant à plage sont en bleu

alors en B9 tu obtiendras leur nombre.
 
Re : Question pour le forum

Bonsoir br44, le Forum,

br44,

Ta cellule B19 reste à 0 car dans ta boucle de test, tu vérifies la couleur de fond et non la couleur de caractères.
Par ailleurs, suite à une erreur de programmation, ta cellule B19 concernée se trouve sur la feuille SAISIE1.

Tu dois donc modifier ton module comme suit :

Code:
Private Sub CommandButton4_Click() 'Bouton "VALIDATION FACTURES IMPAYEES"

'Je recherche la dernière ligne de la colonne "A" (NomClient)
Lig = CLng(NomClient.List(NomClient.ListIndex, (NomClient.ColumnCount - 1)))
...
...
...
'si l'item est "Payer"
'alors mettre couleur bleue dans la bonne colonne uniquement
    If FactureUnique.List(y, 2) = "Payer" Then
       Sheets("RECAP IMPAYER").Range("I" & Lig).Offset(, y * 15).Font.ColorIndex = 5 'Bleu
    Else
       Sheets("RECAP IMPAYER").Range("I" & Lig).Offset(, y * 15).Font.ColorIndex = 3 'Rouge
    End If
 Next y
End With

[COLOR="RoyalBlue"][B]With Feuil5
Set plage = .Range("B12:I16")
  .Range("B19") = ""
  For Each C In plage
    If C.Font.ColorIndex = 5 Then
      .Range("B19") = .Range("B19") + C.Value
    End If
  Next C
End With[/B][/COLOR]

End Sub

Espérant avoir solutionné le problème.

Cordialement.
 
Dernière édition:
Re : Question pour le forum

Bonjour ,Staple1600,Papou-net ,le forum "

Tout d'abord un grand merci à vous deux pour vos réponses .

Je m'excuse d'avoir été aussi long pour vous répondre mais je testais la dernière proposition de Papou-net .

Staple1600: Merci pour tes explications . Seulement tu as commis une erreur
Je ne voulais pas compter le nombre de cellules écrites en bleues ,mais les additionnées pour que la somme total s'affiche dans la cellules "B19" .


Papou-net : Je viens de testée ta dernière macro est j'ai une bonne nouvelle ,cela fonctionne quand t'ont sélectionne une ligne complète et qu'ont la valide . Serait-t-il possible de la faire fonctionner de manière que si il n'y a qu'une cellule en bleue le résultat s'affiche quand même dans la cellule de destination ?

Explication : lors de la copie de la feuille "SAISIE1" vers la feuille "RECAP IMPAYER" seule les cellules Rouges supérieur à "0" seront sélectionnées,(condition non fonctionnel dans le bouton "enregister" ) .Donc il y auras des cellules vides dans le tableau il faut donc en tenir compte dans la macro ,enfin si c'est possible?

J'ai rajouter un ".value" au niveau du premier .Range("B19") de ta macro pour régler le problème de l'affichage est cela fonctionne .

Te remerciant d'avance et m'excusant des complications éventuelles . Je te dis à bientôt sur se post .Amicalement BR44
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

Réponses
5
Affichages
273
Réponses
40
Affichages
1 K
Réponses
3
Affichages
572
Retour