VBA excel

VBA excel - VB/VBA/VBS - Programmation

Marsh Posté le 27-02-2013 à 17:30:33    

Bonjour,
 
Je suis debutante en vba et j'ai donc besoin de votre aide.
Voila j'ai un tableau de donnee du style:
       1  2  3  4  5  6  7  8  9  10
FR1  A  T G  C  A  G  C  T  C  G  
FR2  A  T G  C  T  N  C  T  C  G
FR3  A  T G  C  A  G  G  C  C  G
FR4  A  T A  A  A  G  G  T  T  G
FR5  A  C G  A  A  C  C  T  N  C  
FR6  A  T G  G  T  C  N  C  T  G
 
J'aimerai surligne/ colorie les cases de chaque colonne qui sont differentes de la 1er ligne.
Par exemple pour la colonne 4, je voudrais colorie les A en rouge et le G en vert (car ils sont differents de C qui est sur la 1er ligne). De plus, je voudrais que tous les N soient colories en orange.
 
J'ai essaye de faire un code que voila:
 

Code :
  1. Sub Color_cells_In_All_Sheets()
  2. Dim FirstAddress As String
  3. Dim MySearch As Variant
  4. Dim myColor As Variant
  5. Dim Rng As Range
  6. Dim I As Long
  7. Dim sh As Worksheet
  8. MySearch = Array("N" )
  9. myColor = Array("3" )
  10. For Each sh In ActiveWorkbook.Worksheets
  11. With sh.Cells
  12. .Interior.ColorIndex = xlColorIndexNone
  13. For I = LBound(MySearch) To UBound(MySearch)
  14. Set Rng = .Find(What:=MySearch(I), _
  15. After:=.Cells(.Cells.Count), _
  16. LookIn:=xlFormulas, _
  17. LookAt:=xlWhole, _
  18. SearchOrder:=xlByRows, _
  19. SearchDirection:=xlNext, _
  20. MatchCase:=False)
  21. If Not Rng Is Nothing Then
  22. FirstAddress = Rng.Address
  23. Do
  24. Rng.Interior.ColorIndex = myColor(I)
  25. Set Rng = .FindNext(Rng)
  26. Loop While Not Rng Is Nothing And Rng.Address <> FirstAddress
  27. End If
  28. Next I
  29. End With
  30. Next sh
  31. End Sub


 
Mais lorsque je le lance, j'ai un overflow...
 
Est-ce que quelqu'un, comprend ce qui ne va pas dans mon code.
Sinon, quelqu'un peut-il me proposer un autre code.
 
Merci.

Reply

Marsh Posté le 27-02-2013 à 17:30:33   

Reply

Marsh Posté le 27-02-2013 à 23:09:28    

 
           Bonjour.    Pour l'overflow, rien ne me frappe à part peut-être les  .Cells  en ligne 15 vis à vis du  With  en ligne 11 …
 
           Autres points :
 
           - ligne 10 :  boucle sur toutes les feuilles mais il est question d'un tableau, pourquoi le chercher alors sur toutes les feuilles ?
 
           - ligne 14 :  recherche sur toutes les cellules de la feuille au lieu de celles du tableau uniquement …
 
           - ligne 16 :  recherche dans les formules, cela ne serait pas mieux dans les valeurs ?
 
           - Pas de test comparatif entre les cellules de la première ligne et celles des suivantes composant le tableau,
             donc toute cellule trouvée est coloriée, même hors tableau, sans tenir compte de la première ligne …
 
           Donc mettre à plat la problématique pour revoir le schéma / la logique / l'organigramme du code, sinon c'est l'usine à gaz assurée ‼
 

Reply

Marsh Posté le 28-02-2013 à 09:19:48    

Okay, je vais essayer ca.
Merci.

Reply

Marsh Posté le 28-02-2013 à 10:03:32    

+1
Et par pitié, des tabulations :o

Reply

Marsh Posté le 28-02-2013 à 10:41:51    

J'ai finalement reussi a faire mon fichier.
Le probleme c'est que ca prend en compte le casse.
C'est a dire que ca me colorie les lettres en minuscules alors que se sont les meme lettres que celle en majuscule.
Existe t-il une fonction qui me permette de ne pas surligner les lettres minuscules identiques a la lettre majuscule de depart?
Merci.

Reply

Marsh Posté le 28-02-2013 à 12:08:02    

Tu utilise quelle fonction pour comparer?
Si recherche, ça doit être dans le paramètre matchcase
Si tu fais une comparaison par égalité, tu peux tout passer en majuscules ou minuscules : http://silkyroad.developpez.com/VB [...] eres/#LI-G

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed