Utiliser la fonction Find pour mettre en forme une colonne

Résolu
bassmart Messages postés 281 Date d'inscription   Statut Membre Dernière intervention   -  
bassmart Messages postés 281 Date d'inscription   Statut Membre Dernière intervention   -
Bonjour à tous,

Après de multiple essais seul, je demande votre aide pour réaliser une partie de mon code avec lequel j'ai du mal!

Voilà, j'ai créé une macro pour la faire la mise en page d'un fichier excel, j'ai réussi à faire beaucoup de chose mais là je suis un peu perdue.

Dans mes fichiers à traiter, le nombre de colonnes et de lignes varient.

Je veux qu'à chaque fois qu'il détecte le mot "Sensor Temp" à l'intérieure des cellules de l'entête de mes colonnes, qu'il effectue l'opération de colorier la cellule contenant le mot et qu'il change la largeur de la colonne.

Et la même chose pour le mot "Sensor Reading".

Voici le début de ma partie de code problématique:
With Range(Cells(1, 9), Cells(1, DerCol))
    Set trouve = Cells.Find(what:="Sensor Temp", lookat:=xlPart, searchdirection:=xlNext)
    Set trouve2 = Cells.Find(what:="Sensor Reading(KPa)", lookat:=xlPart, searchdirection:=xlNext)    

        
    End With


Mes fonction Find semble fonctionné, ils me renvoient la première valeur trouvé correspondant à ma recherche.

J'ai essayé des fonction loop, loop while avec comme résultats une boucle infini. J'ai aussi essayé avec la fonction Case mes encore là, sans succès!
Select Case trouve
        Case Is = "Sensor Temp"
            Cells.Interior.ColorIndex = 23
        Case Is = "Sensor Reading"
            Cells.Interior.ColorIndex = 23
        Case Else
    End Select


Merci de votre aide!

2 réponses

  1. ccm81 Messages postés 11033 Statut Membre 2 434
     
    Bonjour

    Un exemple
    http://www.cjoint.com/c/FDuuMUhjiUQ

    Cdlmnt
    0
    1. bassmart Messages postés 281 Date d'inscription   Statut Membre Dernière intervention   1
       
      Merci beaucoup pour l'exemple ccm81!
      0
  2. michel_m Messages postés 18903 Date d'inscription   Statut Contributeur Dernière intervention   3 320
     
    Bonjour Bassmart, Ccm81

    Un autre exemple

    nota: "xlpart" de "find" est une propriété par défaut. donc ne pas l'écrire car sensor xyz, sensor abc ... seront pris en considération

    Option Explicit
    '-------------------------------------------------------
    Sub chercher_sensors()
    Dim Nbre As Byte, Cptr As Byte, Col As Integer

    Application.ScreenUpdating = False
    Nbre = Application.CountIf(Rows(1), "sensor*")
    If Nbre > 0 Then
    Col = Cells.Columns.Count
    For Cptr = 1 To Nbre
    Col = Rows(1).Find("sensor", Cells(1, Col), xlValues).Column
    With Cells(1, Col)
    .Interior.ColorIndex = 40
    .ColumnWidth = 30
    .HorizontalAlignment = xlCenter
    End With
    Next
    End If
    End Sub

    0
    1. bassmart Messages postés 281 Date d'inscription   Statut Membre Dernière intervention   1
       
      Merci pour la réponse michel!

      Ça fonctionne très bien!

      J'ai modifié un peu pour que je puisse donnée 2 largeur de colonne différentes!

      Comme ceci:

      Nbre = Application.CountIf(Rows(1), "Sensor*")
              If Nbre > 0 Then
                  Col = Cells.Columns.Count
                      For Cptr = 1 To Nbre
                          Col = Rows(1).Find("Sensor Temp", Cells(1, Col), xlValues).Column
                          With Cells(1, Col)
                              .Interior.ColorIndex = 37
                              .ColumnWidth = 15
                          End With
                      Next
                      For Cptr = 1 To Nbre
                      Col = Rows(1).Find("Sensor Reading", Cells(1, Col), xlValues).Column
                          With Cells(1, Col)
                              .Interior.ColorIndex = 37
                              .ColumnWidth = 20
                          End With
                      Next
              End If
      0