Utiliser la fonction Find pour mettre en forme une colonne

Résolu/Fermé
bassmart Messages postés 281 Date d'inscription jeudi 19 février 2015 Statut Membre Dernière intervention 19 décembre 2023 - 20 avril 2016 à 21:29
bassmart Messages postés 281 Date d'inscription jeudi 19 février 2015 Statut Membre Dernière intervention 19 décembre 2023 - 21 avril 2016 à 14:11
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!
A voir également:

2 réponses

ccm81 Messages postés 10851 Date d'inscription lundi 18 octobre 2010 Statut Membre Dernière intervention 16 avril 2024 2 404
20 avril 2016 à 22:39
Bonjour

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

Cdlmnt
0
bassmart Messages postés 281 Date d'inscription jeudi 19 février 2015 Statut Membre Dernière intervention 19 décembre 2023 1
21 avril 2016 à 14:11
Merci beaucoup pour l'exemple ccm81!
0
michel_m Messages postés 16603 Date d'inscription lundi 12 septembre 2005 Statut Contributeur Dernière intervention 16 décembre 2023 3 303
21 avril 2016 à 07:07
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
bassmart Messages postés 281 Date d'inscription jeudi 19 février 2015 Statut Membre Dernière intervention 19 décembre 2023 1
21 avril 2016 à 14:11
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