Application d'un format de cellule en fonction d'une valeur dans une colon

Bonjour a tous,

J'aimerais mettre a jour le format de chacune des lignes de mon tableau (feuille "BOQ Model") en fonction de la lettre contrenu dans la colonne b de celui ci. Pour cela je fais reference a une plage de celulle renome (feuille "Hidden data") qui a la meme taille que chacune des lignes de mon tableau. Je souhaite stopper la boucle des que la lettre "A" s'affiche dans cette meme colonne. Le probleme c'est que des le lancement de la macro j'ai un message d'erreur.

Je pense que la base du code (present a la toute fin du module 2 sur Vba) permet de comprendre mon probleme. Merci d'avance a celui ou celle qui pourra m'orienter et desole pour la syntaxe je suis debutant en vba.

Sub fourth_part()

    'Intro'
    Dim n As Integer
    n = 1

    'Loop'
    Do While Range("B" & n).Value <> "A"

    'Rows format'
    If Range("B" & n).Value = "T" Then
        Application.Goto Reference:="Total_format"
        Selection.Copy
        Sheets("BOQ Model").Range("B" & n).Select
        Selection.PasteSpecial Paste:=xlPasteFormats, Operation:=xlNone, _
            SkipBlanks:=False, Transpose:=False
        Application.CutCopyMode = False
        Rows("n:n").Select
        Selection.RowHeight = 15
    ElseIf Range("B" & n).Value = "S" Then
        Application.Goto Reference:="Subcategory_format"
        Selection.Copy
        Sheets("BOQ Model").Range("B" & n).Select
        Selection.PasteSpecial Paste:=xlPasteFormats, Operation:=xlNone, _
            SkipBlanks:=False, Transpose:=False
        Application.CutCopyMode = False
        Rows("n:n").Select
        Selection.RowHeight = 15
    ElseIf Range("B" & n).Value = "C" Then
        Application.Goto Reference:="Category_format"
        Selection.Copy
        Sheets("BOQ Model").Range("B" & n).Select
        Selection.PasteSpecial Paste:=xlPasteFormats, Operation:=xlNone, _
            SkipBlanks:=False, Transpose:=False
        Application.CutCopyMode = False
        Rows("n:n").Select
        Selection.RowHeight = 15
    ElseIf Range("B" & n).Value = "L" Then
        Application.Goto Reference:="Location_format"
        Selection.Copy
        Sheets("BOQ Model").Range("B" & n).Select
        Selection.PasteSpecial Paste:=xlPasteFormats, Operation:=xlNone, _
            SkipBlanks:=False, Transpose:=False
        Application.CutCopyMode = False
        Rows("n:n").Select
        Selection.RowHeight = 30
    Else
    End If

    'End loop'
    n = n + 1
    Loop

End Sub

Paul

Bonsoir,

la ligne qui pose problème mais ce doit être la même chose pour les autres conditions :
Sheets("BOQ Model").Range("B" & n).Select
Vous demandez à VBA de sélectionner une plage sur une feuille non activée... Donc activez la feuille avant la sélection. Attention à bien revenir sur celle que vous travaillez...

Il vous faudrait comprend ce qu'il y a à faire dans votre procédure afin de vérifier si les nombreux "Select" sont nécessaire ! En effet il faut éviter de s'en servir, bien que parfois on soit obligé.

Attention également, vous utilisez "n" en integer pour les lignes de feuille, mais un integer est limité à 32565, donc préférez y le "Long" cela évite les dépassements de capacité ! Mais autant 32000 lignes vous suffisent

Ensuite vous cherchez un "A" je n'en ai point vu... S'il y a forcément une lettre alors cherchez un vide "" plutôt qu'un A, mais là c'est vous qui voyez !

@ bientôt

LouReeD

Bonjour LouReeD,

Ok super merci pour ton retour, et je vais regarder comment je peux optimiser mes select sur l'ensemble de mon code. En effet, le A etait volontairement en blanc pour pas qu'il soit visible.

Bonne journee !!

Paul

Bonsoir,

si l'intention est de faire un copier/coller pur et simple alors un "copy destination est plus rapide :
Range("Total_format").Copy Destination:=Sheets("BOQ Model").Range("B" & n)

Comme cela pas de Select, pas besoin d'afficher la feuille, on se sert simplement du nom sous "Excel" pour aller cherche le Range voulu et on le colle à la destination voulu, toujours sans Select.

A essayer de toutes urgences ! On verra si cela fonctionne.
attention ce genre de copie, copie tout : format, mise en forme, valeurs etc...

@ bientôt

LouReeD

Bonjour LouReed,

En effet, j'avais deja trouve une methode sans utiliser select mais la tienne est encore plus rapide.

Merci et bonne journee !!

Paul

Bonjour,

Merci pour votre retour et remerciement !

@ bientôt

LouReeD

Rechercher des sujets similaires à "application format fonction valeur colon"