Colonne Plage nommée

Bonjour,

Dans mon fichier xlsm j'importe un xlsx afin de l'analyser.

Dans celui ci j'ai plusieurs colonnes avec des titres

Mon problème :

Les colonnes peuvent ne pas être au même endroit par rapport a d'autres importation

pour remédier a ce problème j'ai fait ceci :

For cell34 = 1 To 4

For i = 1 To 25

If Sheets("Report").Cells(cell34, i).Value = "Operation" Then ' si il trouve colonne "Operation"

Range(Cells(1, i), Cells(1, i)).EntireColumn.Select ' Selectionne la colonne

ActiveWorkbook.Names.Add Name:="Operation", RefersToR1C1:="=" & "Report" & "!C" & i ' et Renomme la colonne en "Operation"

next

next

Jusque la tout va assez bien

la ou je colle c'est lorsque je cherche la colonne "Operation"

et que je lui ajoute cette opération .

Const Limit As Integer = 25

For Each c In Range("Operation")

If c.Value > Limit Then

If c.Value = "NOK" Then c.Interior.ColorIndex = 3: c.Font.ColorIndex = 2

End If

next

La formule fonctionne très bien mais l’opération est très longue (il n'y a pas qu'une condition)

Par contre si je fait ceci c'est beaucoup plus rapide .

Je n'utilise pas de plage nommée

lRow = Range("B" & Rows.Count).End(xlUp).Row

Set MR = Range("B2:B" & lRow)

For Each cell In MR

If cell.Value = "NOK" Then cell.Interior.ColorIndex = 3: cell.Font.ColorIndex = 2

Next

Il va de soit que j'ai besoin des plages nommées pour d'autres operations.

Il y a t il un moyen de récupérer l’emplacement de la colonne exemple Operation=colonne B ??

Merci pour votre aide

Eric

Salut Jefekoi,

une piste avec la fonction FIND...

Un double-clic sur la feuille démarre la macro.

Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
'
Cancel = True
Set rCel = Cells.Find(what:="Opération", lookat:=xlWhole, LookIn:=xlValues)
sCol = Split(Columns(rCel.Column).Address(ColumnAbsolute:=False), ":")(1)
For x = rCel.Row + 1 To Range(sCol & Rows.Count).End(xlUp).Row
    If Cells(x, rCel.Column) = "NOK" Then
        Cells(x, rCel.Column).Interior.ColorIndex = 3
        Cells(x, rCel.Column).Font.ColorIndex = 2
    End If
Next
'
End Sub

A+

5jefekoi.xlsm (14.75 Ko)

Merci curulis57

Tres bien l'exemple (que je vais garder, il pourrait me servir), mais pas pour ma demande, car ton exemple il faut cliquer alors que moi c'est une analyse du ficher sans faire quoi que ce soit.

C'est bon j'ai trouve

a = Range("Etat").Address

co = Split(a, "$")(2)

lRow = Range(co & Rows.Count).End(xlUp).Row

Set MR = Range(co & "2:" & co & lRow)

Rechercher des sujets similaires à "colonne plage nommee"