difficultés à coder sous VBA

jerrycollins6

XLDnaute Nouveau
Bonsoir,

J'aurai besoin d'aide pour coder sous VBA car je n'arrive pas à faire ce dont j'ai besoin.
le but étant de colorier un certain nombre de cases selon si une autre case est vide ou pas.
Plus précisément j'ai mis en pièce jointe mon tableau:

il faut donc :

1) si dans une des colonnes en rouges, il y a une cellule "NON VIDE" alors il faut colorier la cellule ainsi que les précédentes sur la mm ligne en bleue.


2) si dans une des colonnes rouges il y a une cellule vide, alors dans ce cas , regarde sur la même ligne dans les cellules vertes qui précèdent (pas toutes justes les deux ou trois qui précèdent la colonne rouge considérée) ou si y a une date < à la date TODAY si c'est le cas mais la en rouge, sinon laisse.

Merci d'avance pour les reponses que vous pourrez m'apporter!

Cordialement
 

Pièces jointes

  • Classeur1.xlsx
    11.3 KB · Affichages: 42
  • Classeur1.xlsx
    11.3 KB · Affichages: 49
  • Classeur1.xlsx
    11.3 KB · Affichages: 45

fanfan38

XLDnaute Barbatruc
Re : difficultés à coder sous VBA

Bonjour
J'espère avoir répondu à ton problème
la macro ce lance au démarrage de l'application (dans thisworkbook)

A+ François
 

Pièces jointes

  • Copie de Classeur1.xlsm
    17.8 KB · Affichages: 47
  • Copie de Classeur1.xlsm
    17.8 KB · Affichages: 52
  • Copie de Classeur1.xlsm
    17.8 KB · Affichages: 48

jerrycollins6

XLDnaute Nouveau
Re : difficultés à coder sous VBA

bonsoir tout d'abord, merci de m'avoir répondu.

ton aide m'a été precieuse. j'ai cependant modifié le code pour avoir exactement ce que je voulais ca donne ca :

Private Sub Workbook_Open()
Dim derlig As Integer
Dim i As Integer
derlig = Range("g65536").End(xlUp).Row
For i = 2 To derlig
If Len(Cells(i, 9).Value) > 0 Then
Range(Cells(i, 5), Cells(i, 9)).Select
coul_bleu
Else
If Cells(i, 7).Value <= Date Then Cells(i, 7).Interior.Color = RGB(255, 0, 0)
If Cells(i, 7).Value = 0 Then Cells(i, 7).Interior.Color = vbWhite
If Cells(i, 8).Value <= Date Then Cells(i, 8).Interior.Color = RGB(255, 0, 0)
If Cells(i, 8).Value = 0 Then Cells(i, 8).Interior.Color = vbWhite
End If
If Len(Cells(i, 12).Value) > 0 Then
Range(Cells(i, 10), Cells(i, 12)).Select
coul_bleu
Else
If Cells(i, 10).Value <= Date Then Cells(i, 10).Interior.Color = RGB(255, 0, 0)
If Cells(i, 10).Value = 0 Then Cells(i, 10).Interior.Color = vbWhite
If Cells(i, 11).Value <= Date Then Cells(i, 11).Interior.Color = RGB(255, 0, 0)
If Cells(i, 11).Value = 0 Then Cells(i, 11).Interior.Color = vbWhite
End If
If Len(Cells(i, 16).Value) > 0 Then
Range(Cells(i, 13), Cells(i, 16)).Select
coul_bleu
Else
If Cells(i, 13).Value <= Date Then Cells(i, 13).Interior.Color = RGB(255, 0, 0)
If Cells(i, 13).Value = 0 Then Cells(i, 13).Interior.Color = vbWhite
If Cells(i, 14).Value <= Date Then Cells(i, 14).Interior.Color = RGB(255, 0, 0)
If Cells(i, 14).Value = 0 Then Cells(i, 14).Interior.Color = vbWhite
If Cells(i, 15).Value <= Date Then Cells(i, 15).Interior.Color = RGB(255, 0, 0)
If Cells(i, 15).Value = 0 Then Cells(i, 15).Interior.Color = vbWhite
End If
If Len(Cells(i, 19).Value) > 0 Then
Range(Cells(i, 17), Cells(i, 19)).Select
coul_bleu
Else
If Cells(i, 17).Value <= Date Then Cells(i, 17).Interior.Color = RGB(255, 0, 0)
If Cells(i, 17).Value = 0 Then Cells(i, 17).Interior.Color = vbWhite
If Cells(i, 18).Value <= Date Then Cells(i, 18).Interior.Color = RGB(255, 0, 0)
If Cells(i, 18).Value = 0 Then Cells(i, 18).Interior.Color = vbWhite
End If
If Len(Cells(i, 22).Value) > 0 Then
Range(Cells(i, 20), Cells(i, 22)).Select
coul_bleu
Else
If Cells(i, 20).Value <= Date Then Cells(i, 20).Interior.Color = RGB(255, 0, 0)
If Cells(i, 20).Value = 0 Then Cells(i, 20).Interior.Color = vbWhite
If Cells(i, 21).Value <= Date Then Cells(i, 21).Interior.Color = RGB(255, 0, 0)
If Cells(i, 21).Value = 0 Then Cells(i, 21).Interior.Color = vbWhite
End If
Next
End Sub

j'aurais cependant quelques questions:

1) une fois que la macro est lancée et qu'elle a fait le boulot, peut on revenir en arriere sans devoir la supprimer?


2) en fait mon tableau ici est connecté à une autre database(QUERY) il est donc actualisé lorsque la database contient de nouvelle données, cependant celles ci sont classées autrement dans mon tableau et lorsque je lance la macro,
ca devient le bordel.

par exemple, si une ligne s'ajoute apres actualisation, elle n appliquera pas le code correctement au tableau tout sera décalé.

de plus lorsque je lance la macro avec mon curseur dans une cellule , celle ci devient bleue automatiquement.

je sais pas si j'ai été assez clair mais pourriez vous m'aider?
 

fanfan38

XLDnaute Barbatruc
Re : difficultés à coder sous VBA

Bonjour
Non, quand la macro a fait son travail on ne peut plus annuler (voir à faire une copie avant...)
Je ne comprends pas la question 2???
Pour la couleur bleu: la macro colorie la cellule sélectionnée... mais elle ne devrait pas être lancée????
Sans fichier pas évident de trouver....
Tu la lances comment ta macro???

A+ François
 

jerrycollins6

XLDnaute Nouveau
Re : difficultés à coder sous VBA

Bonjour,

et bien pour la question 2 , pour faire simple, des lignes sont régulièrement ajoutées dans le tableau, et pas forcément à la suite du tableau, ca peut être au début, ou encore au milieu. ( packe dans le tableau il ya un filtre et les données sont triées selon ce filtre).

donc ma question était, si on rajoute des lignes, et qu'on relance la macro, est ce que ca marche?

ou peut etre faut il inclure dans la macro une actualisation du tableau?

peut etre cette aprem je pourrai joindre un fichier pour illustrer.

Merci d'avance.
 

jerrycollins6

XLDnaute Nouveau
Re : difficultés à coder sous VBA

Bonjour,
merci pour ton aide françois.

j'ai créer une autre discussion sur la connection entre mes deux workbooks, cependant personnes ne m'a repondu du coup je la pose ici.



j'ai un fichier excel avec tableau de valeurs (workbook) lié à un autre workbook, qui sert de database, par le biais d'une query (dans l'onglet données).

a chaque fois qu'une valeur est ajoutée dans la database , je peux donc actualiser le tout et mon tableau est aussi mis à jour.


cependant j'essaye d'exporter ces deux fichiers sur un autre ordi , mais la connection se perd.
je pense à cause de la chaine de connection.

pouvez vous m 'eclairer la dessus .

est il possible donc de deplacer des fichiers connectés entre eux vers un autre ordi ou une clé usb sans perdre la connection?

Merci d'avance
 

jerrycollins6

XLDnaute Nouveau
Re : difficultés à coder sous VBA

Bonsoir francois,

j'aurai besoin encore de ton aide precieuse ...

je voudrais savoir si c'est possible de créer une macro qui donne un graphe à partir de ce tableau,
comme dans l'exemple en fonction des dates sachant que le tableau va grandir( d'autres valeurs vont s'ajouter).
et sachant qu'il y a une vingtaines d'autres colonnes que je n'ai pas mises.
j'ai essayé aussi avec un tableau croisé dynamique mais ca rend pas vraiment ce que je veux.


le but serait
qu'il mette dans un meme graphe les colonnes 28 en fonction des dates sans avoir à selectionner à chaque fois, notamment lorsque le tableau s'agrandit.

de pouvoir choisir la periode. par exemple, si je veux les valeurs de juin à mai.

merci d'avance
 

Pièces jointes

  • Classeur1.xlsx
    16.4 KB · Affichages: 29
  • Classeur1.xlsx
    16.4 KB · Affichages: 35
  • Classeur1.xlsx
    16.4 KB · Affichages: 34

Discussions similaires

Statistiques des forums

Discussions
312 094
Messages
2 085 244
Membres
102 834
dernier inscrit
nadusha