Recherche de texte specifique avec/sans mise en forme Le sujet est résolu

Y compris Power BI, Power Query et toute autre question en lien avec Excel
T
Tribilbo
Jeune membre
Jeune membre
Messages : 13
Inscrit le : 21 mars 2017
Version d'Excel : 2010

Message par Tribilbo » 21 mars 2017, 20:32

Bonjour,
J'aimerai créer une macro mais je suis totalement nul dans la progammation. J'ai bien essaye avec des formules mais je pense que mon problème est trop complexe pour des formules de bases, donc je me tourne vers vous.

J'ai joint mon fihcier excel comme exemple.

J'aimerai pouvoir faire une macro qui me cherche les termes R5 à R9 pour chaque colonne (fusionnee et non fusionee, en bleu). Si elle ne trouve pas un ou plusieurs des termes , la macro ecrit dans la case jaune ce/ces termes. De plus, si elle trouve un ou des termes avec la mise en forme barrée, la macro ecrit ce/ces termes toujours dans la case jaune.

J'ai bien essaye de commancer a écrire une macro avec des if et des cells.find() mais je me perds dans la multitude de fi `écrire.

Pourriez-vous m'aider ? Je ne sais pas si j'ai été bien clair.

Merci !
Exemple.xlsx
(9.16 Kio) Téléchargé 6 fois
g
gmb
Fanatique d'Excel
Fanatique d'Excel
Messages : 12'392
Appréciations reçues : 305
Inscrit le : 4 avril 2013
Version d'Excel : 2016

Message par gmb » 21 mars 2017, 20:48

Bonjour et bienvenue sur le forum

Ton souhait serait beaucoup plus facile à réaliser s'il n'y avait pas de cellules fusionnées. Celles-ci sont un cauchemard pour les macros.
Tu aurais donc intérêt à les remplacer par des cellules centrées sur plusieurs colonnes et l'aspect visuel serait identique.
OK ?
Bye !
T
Tribilbo
Jeune membre
Jeune membre
Messages : 13
Inscrit le : 21 mars 2017
Version d'Excel : 2010

Message par Tribilbo » 21 mars 2017, 20:53

Pour les cellules fusionnées ce n'est pas une obligation si pour les macro c'est un cauchemard. Disons que ce n'est qu'une convention d'écriture que l'on peut changer sans problème.

Donc considérons la cellule fusionnée sur la même colone que les autres.

Merci !
Avatar du membre
curulis57
Passionné d'Excel
Passionné d'Excel
Messages : 3'207
Appréciations reçues : 138
Inscrit le : 4 janvier 2016
Version d'Excel : 2016 FR / 2019 FR

Message par curulis57 » 21 mars 2017, 21:23

Salut Tribilbo, gmb,

si j'ai bien compris l'énoncé du problème...
'
iCol = UsedRange.Columns.Count
Cells(9, 1).Resize(1, iCol).ClearContents
For x = 1 To iCol
    iRow = Cells(Rows.Count, x).End(xlUp).Row
    sCol = Split(Columns(x).Address(ColumnAbsolute:=False), ":")(1)
    If iRow > 1 Then
        iOK = 0
        For y = 1 To iRow
            For Z = 5 To 9
                If Cells(y, x) Like "R" & Trim(Str(Z)) & "*" Then
                    If Range(sCol & y).Font.Strikethrough = True Then
                        Cells(9, x) = Cells(9, x) & "R" & Trim(Str(Z)) & " "
                        Range(sCol & 9).Characters(Len(Cells(9, x)) - 3, 2).Font.Strikethrough = True
                    Else
                        iOK = 1
                    End If
                End If
            Next
        Next
        If iOK = 0 Then
            For Z = 5 To 9
                Cells(9, x) = Cells(9, x) & "R" & Trim(Str(Z)) & " "
            Next
            Range(sCol & 9).Characters(Len(Cells(9, x)) - 15, 15).Font.Strikethrough = False
        End If
    End If
Next
'
:btres:

:D
A+
Exemple.xlsm
(20.86 Kio) Téléchargé 12 fois
T
Tribilbo
Jeune membre
Jeune membre
Messages : 13
Inscrit le : 21 mars 2017
Version d'Excel : 2010

Message par Tribilbo » 22 mars 2017, 01:06

Merci ! C est quasiment ca . J ai fait une erreur:
Tribilbo a écrit :J'aimerai pouvoir faire une macro qui me cherche les termes R5 à R9 pour chaque colonne
En fait il fallait lire R1 a R9. J ai essaye de faire les modifs moi meme mais je dois avouer que je suis un peu perdu dans ce code. Aussi quand je rajoute des R5 ou autre dans les colonnes des dates suivantes qui sont vides dans mon exemple, la macro n affiche rien.
De plus, au 4 mars je n ai pas R9 d afficher, qu 6 mqrs R6 est qfficher deux fois, je ne le veux qu une fois.

Est ce que ce sont de grosses modifs a faire ?

Merci encore
Avatar du membre
curulis57
Passionné d'Excel
Passionné d'Excel
Messages : 3'207
Appréciations reçues : 138
Inscrit le : 4 janvier 2016
Version d'Excel : 2016 FR / 2019 FR

Message par curulis57 » 22 mars 2017, 08:44

Salut Tribilbo,

si j'ai bien compris...
'
iCol = UsedRange.Columns.Count
Cells(9, 1).Resize(1, iCol).ClearContents
For x = 1 To iCol
    iRow = Cells(Rows.Count, x).End(xlUp).Row
    sCol = Split(Columns(x).Address(ColumnAbsolute:=False), ":")(1)
    If iRow > 1 Then
        iOK = 0
        For y = 1 To iRow
            For Z = 1 To 9
                If Cells(y, x) Like "R" & Trim(Str(Z)) & "*" Then
                    If Range(sCol & y).Font.Strikethrough = True Then
                        sFlag = "R" & Trim(Str(Z))
                        If InStr(Cells(9, x), sFlag) = 0 Then Cells(9, x) = Cells(9, x) & "R" & Trim(Str(Z)) & " "
                        Range(sCol & 9).Characters(Len(Cells(9, x)) - 3, 2).Font.Strikethrough = True
                    Else
                        iOK = 1
                    End If
                End If
            Next
        Next
        If iOK = 0 Then
            For Z = 1 To 9
                Cells(9, x) = Cells(9, x) & "R" & Trim(Str(Z)) & " "
            Next
            Range(sCol & 9).Characters(Len(Cells(9, x)) - 15, 15).Font.Strikethrough = False
        End If
    End If
Next
'
A+
Exemple.xlsm
(22.67 Kio) Téléchargé 9 fois
T
Tribilbo
Jeune membre
Jeune membre
Messages : 13
Inscrit le : 21 mars 2017
Version d'Excel : 2010

Message par Tribilbo » 22 mars 2017, 19:02

Bonjour, malheureusement ce n'est pas encore tout à fait ca.

Pour étre plus clair je vais donner deux exemples:
Colonne A
R1
R2
R3

J'aimerai que la macro affiche dans la case A9: R4 R5 R6 R7 R8 R9

Colonne C
R5
R6
R7
R8

J'aimerai que la macro affiche dans la case C9: R1 R2 R3 R4 R5 R9

Si vous avez des questions n'hésitez pas !

Merci encore pour votre aide.
Avatar du membre
curulis57
Passionné d'Excel
Passionné d'Excel
Messages : 3'207
Appréciations reçues : 138
Inscrit le : 4 janvier 2016
Version d'Excel : 2016 FR / 2019 FR

Message par curulis57 » 22 mars 2017, 20:15

Salut Tribilbo,

Ok, j'avais mal interprété l'énoncé de départ! Au temps pour moi!
Je te fais ça... quand je peux!

:wink:
A+
Avatar du membre
curulis57
Passionné d'Excel
Passionné d'Excel
Messages : 3'207
Appréciations reçues : 138
Inscrit le : 4 janvier 2016
Version d'Excel : 2016 FR / 2019 FR

Message par curulis57 » 24 mars 2017, 00:33

Salut Tribilbo,

voilà ton fichier!
'
Dim tTab(10) As Integer
'
iCol = UsedRange.Columns.Count
Cells(9, 1).Resize(1, iCol).ClearContents
'
For x = 1 To iCol
    iRow = Cells(Rows.Count, x).End(xlUp).Row
    sCol = Split(Columns(x).Address(ColumnAbsolute:=False), ":")(1)
    If iRow > 1 Then
        Erase tTab
        For y = 1 To iRow
            If Left(Cells(y, x), 1) = "R" Then tTab(Val(Mid(Cells(y, x), 2, 1))) = IIf(Range(sCol & y).Font.Strikethrough = True, 2, 1)
        Next
        For y = 1 To 9
            If tTab(y) <> 1 Then Cells(9, x) = Cells(9, x) & "R" & Trim(Str(y)) & " "
        Next
        iIdx = -1
        For y = 1 To 9
            If tTab(y) <> 1 Then
                iIdx = iIdx + 1
                Range(sCol & 9).Characters(1 + (iIdx * 3), 2).Font.Strikethrough = IIf(tTab(y) = 2, True, False)
            End If
        Next
    End If
Next
'
:btres:

:D
A+
Exemple.xlsm
(22.51 Kio) Téléchargé 10 fois
T
Tribilbo
Jeune membre
Jeune membre
Messages : 13
Inscrit le : 21 mars 2017
Version d'Excel : 2010

Message par Tribilbo » 24 mars 2017, 16:16

Super merci !!!!!

C'est exactement ca. Maintenant je n'ai plus qu'a comprendre le code et le modifier pour mes besoins (ce que j'ai réussi rapidement).

Merci beaucoup de ton temps.
Répondre Sujet précédentSujet suivant
  • Sujets similaires
    Réponses
    Vues
    Dernier message