Selection dernière ligne d'une plage

Bonjour

Besoin de votre aide

Présentement je sélectionne une cellule, lui donne une valeur et mise en forme avec ce code

 Range("E40").Select
    ActiveCell.FormulaR1C1 = "Travaux particuliers"

    With Selection
        .HorizontalAlignment = xlLeft
        .VerticalAlignment = xlBottom
        .ReadingOrder = xlContext
    End With
    Selection.Font.Bold = True
    With Selection.Font
        .Name = "Calibri"
        .Size = 10
    End With
    Range("E40:O40").Select
    With Selection
        .HorizontalAlignment = xlCenter
        .VerticalAlignment = xlBottom
        .ReadingOrder = xlContext
    End With
    Selection.Merge
    With Selection.Interior
        .Pattern = xlSolid
        .PatternColorIndex = xlAutomatic
        .ThemeColor = xlThemeColorAccent1
        .TintAndShade = 0.399975585192419
        .PatternTintAndShade = 0
    End With

Comment faire pour sélectionner la première ligne vide dans le range E26:E40 plutôt que E40 et lui appliquer le reste du code

Merci

Salut Gonteur,

à tester

    ActiveSheet.Range("E26:E40").Find("").Select
    ActiveCell.FormulaR1C1 = "Travaux particuliers"

    With Selection
        .HorizontalAlignment = xlLeft
        .VerticalAlignment = xlBottom
        .ReadingOrder = xlContext
    End With
    Selection.Font.Bold = True
    With Selection.Font
        .Name = "Calibri"
        .Size = 10
    End With
    Range(Cells(ActiveCell.Row, ActiveCell.Column), Cells(ActiveCell.Row, ActiveCell.Column + 10)).Select
    With Selection
        .HorizontalAlignment = xlCenter
        .VerticalAlignment = xlBottom
        .ReadingOrder = xlContext
    End With
    Selection.Merge
    With Selection.Interior
        .Pattern = xlSolid
        .PatternColorIndex = xlAutomatic
        .ThemeColor = xlThemeColorAccent1
        .TintAndShade = 0.399975585192419
        .PatternTintAndShade = 0
    End With

@++

Bonjour à tous,

Une version sans les fameux "Select" ...

Dim Dlig As Integer

    Dlig = Range("E" & Rows.Count).End(xlUp).Row + 1

    With Range("E" & Dlig)
        .FormulaR1C1 = "Travaux particuliers"
        .HorizontalAlignment = xlLeft
        .VerticalAlignment = xlBottom
        .ReadingOrder = xlContext
        .Font.Bold = True
        With .Font
            .Name = "Calibri"
            .Size = 10
        End With
    End With

    With Range("E" & Dlig & ":O" & Dlig)
        .HorizontalAlignment = xlCenter
        .VerticalAlignment = xlBottom
        .ReadingOrder = xlContext
        .Merge
        With .Interior
            .Pattern = xlSolid
            .PatternColorIndex = xlAutomatic
            .ThemeColor = xlThemeColorAccent1
            .TintAndShade = 0.399975585192419
            .PatternTintAndShade = 0
        End With
    End With

ric

Merci ric & m3ellem1

ric, c'est fonctionnelle, merci

Autre souci

Je remontent les lignes vides jusqu'à E40 avec ce code

Worksheets("Facture").Range("e41:o100").SpecialCells(xlCellTypeBlanks).Delete xlUp

Comment maintenant les remonter jusqu'à la ligne "travaux particuliers" qu'on vient de créer?

Bonjour,

Ceci devrait fonctionner ...

Worksheets("Facture").Range("e" & dlig & ":o100").SpecialCells(xlCellTypeBlanks).Delete xlUp

ric

merci ric

il y a une erreur de compilation de généré

Attendu: séparateur de liste ou )

Bonjour,

Excuse-moi, j'ai oublié une perluète ( & ) ... j'ai corrigé le code du post précédent.

ric

Merci beaucoup ric

C'est fonctionnelle

J'ai modifié afin de ne pas écraser la ligne créer

Worksheets("Facture").Range("e" & Dlig + 1 & ":o100").SpecialCells(xlCellTypeBlanks).Delete xlUp

J'ai encore un souci pour les formats, ptt peux-tu m'aider

En fait dans le Range E26:O39, des valeurs sont générés par un code.

Ensuite (via ton aide avec le code) s'ajoute à la première ligne vide la valeur "Travaux particuliers" + format & mise en forme

Comment modifier le format des lignes avant "Travaux particulier"? Avant je le faisait via "plage.select" car la plage était fixe.

Merci

Bonjour à tous,

Un essai ...

Dim Dlig As Integer     ' pour trouver dernière ligne

    Dlig = Range("E" & Rows.Count).End(xlUp).Row  ' trouver dernière ligne non-vide

    With Range("E26:O" & Dlig)  ' << plage à traiter (adapter au besoin)

    ' place ici le code personnalisation

    End With

    Dlig = Dlig + 1     ' ajouter 1 pour avoir la première ligne vide

    ' <<<< à compter d'ici, je n'ai rien changé >>>>
    With Range("E" & Dlig)
        .FormulaR1C1 = "Travaux particuliers"
        .HorizontalAlignment = xlLeft
        .VerticalAlignment = xlBottom
        .ReadingOrder = xlContext
        .Font.Bold = True
        With .Font
            .Name = "Calibri"
            .Size = 10
        End With
    End With

    With Range("E" & Dlig & ":O" & Dlig)
        .HorizontalAlignment = xlCenter
        .VerticalAlignment = xlBottom
        .ReadingOrder = xlContext
        .Merge
        With .Interior
            .Pattern = xlSolid
            .PatternColorIndex = xlAutomatic
            .ThemeColor = xlThemeColorAccent1
            .TintAndShade = 0.399975585192419
            .PatternTintAndShade = 0
        End With
    End With

ric

Merci ric

le code fonctionne mais il y a une double action

Alignement de la cellule "e" à gauche et centré par la suite, comment la garder à gauche

Dlig = Range("E" & Rows.Count).End(xlUp).Row

    With Range("E26:O" & Dlig)
        .HorizontalAlignment = xlLeft
        With .Font
            .Name = "Calibri"
            .Size = 8
            .Underline = xlUnderlineStyleNone
            .ThemeColor = xlThemeColorLight1
            .TintAndShade = 0
            .ThemeFont = xlThemeFontMinor
        End With

    End With

     Dlig = Dlig + 2

    With Range("E" & Dlig)
        .FormulaR1C1 = "Travaux particuliers"
        .HorizontalAlignment = xlLeft
        .VerticalAlignment = xlBottom
        .ReadingOrder = xlContext
        .Font.Bold = True
        With .Font
            .Name = "Calibri"
            .Size = 10
        End With
    End With

    With Range("E" & Dlig & ":O" & Dlig)
        .HorizontalAlignment = xlCenter
        .VerticalAlignment = xlBottom
        .ReadingOrder = xlContext
        .Merge
        With .Interior
            .Pattern = xlSolid
            .PatternColorIndex = xlAutomatic
            .ThemeColor = xlThemeColorAccent1
            .TintAndShade = 0.399975585192419
            .PatternTintAndShade = 0
        End With
    End With

           For iLig4 = 2 To iLigFin4
                If Sheets("Facturation_Détaillée").Range("A" & iLig4).Value = Target.Value Then
                    Range("e" & iEcr4).Value = Sheets("Facturation_Détaillée").Range("az" & iLig4).Value
                    Range("n" & iEcr4).Value = Sheets("Facturation_Détaillée").Range("ay" & iLig4).Value
                    Range("o" & iEcr4).Value = Sheets("Facturation_Détaillée").Range("bc" & iLig4).Value
                    iEcr4 = iEcr4 + 1
                End If
            Next iLig4

        End If
  End If

Il faudrait que la mise en forme et police s'ajuste seulement à la ligne ajouté "travaux particuliers"

With Range("E" & Dlig & ":O" & Dlig)
        .HorizontalAlignment = xlCenter
        .VerticalAlignment = xlBottom
        .ReadingOrder = xlContext
        .Merge
        With .Interior
            .Pattern = xlSolid
            .PatternColorIndex = xlAutomatic
            .ThemeColor = xlThemeColorAccent1
            .TintAndShade = 0.399975585192419
            .PatternTintAndShade = 0
        End With
    End With

Merci

Bonjour,

Alignement de la cellule "e" à gauche et centré par la suite, comment la garder à gauche

Effectivement, il y a du code inutile...

Avec un léger ménage ...

    Dlig = Range("E" & Rows.Count).End(xlUp).Row

    With Range("E26:O" & Dlig)
        .HorizontalAlignment = xlLeft
        With .Font
            .Name = "Calibri"
            .Size = 8
            .Underline = xlUnderlineStyleNone
            .ThemeColor = xlThemeColorLight1
            .TintAndShade = 0
            .ThemeFont = xlThemeFontMinor
        End With
    End With

    Dlig = Dlig + 2

    With Range("E" & Dlig)
        .FormulaR1C1 = "Travaux particuliers"
        .HorizontalAlignment = xlLeft
        .VerticalAlignment = xlBottom
        .ReadingOrder = xlContext
        .Font.Bold = True
        With .Font
            .Name = "Calibri"
            .Size = 10
        End With
    End With

    With Range("E" & Dlig & ":O" & Dlig)
        .Merge
        With .Interior
            .Pattern = xlSolid
            .PatternColorIndex = xlAutomatic
            .ThemeColor = xlThemeColorAccent1
            .TintAndShade = 0.399975585192419
            .PatternTintAndShade = 0
        End With
    End With

    For iLig4 = 2 To iLigFin4
        If Sheets("Facturation_Détaillée").Range("A" & iLig4).Value = Target.Value Then
            Range("e" & iEcr4).Value = Sheets("Facturation_Détaillée").Range("az" & iLig4).Value
            Range("n" & iEcr4).Value = Sheets("Facturation_Détaillée").Range("ay" & iLig4).Value
            Range("o" & iEcr4).Value = Sheets("Facturation_Détaillée").Range("bc" & iLig4).Value
            iEcr4 = iEcr4 + 1
        End If
    Next iLig4

ric

Merci beaucoup ric

Non seulement tu m'aides mais tu m'apprends également beaucoup

Les cellules E:O demeurent centrées et je ne comprends pas pourquoi? Je ne vois pas d'indication dans le code qui centre le contenu des cellules

 Dlig = Range("E" & Rows.Count).End(xlUp).Row

    With Range("E26:O" & Dlig)
        .HorizontalAlignment = xlLeft
        With .Font
            .Name = "Calibri"
            .Size = 8
            .Underline = xlUnderlineStyleNone
            .ThemeColor = xlThemeColorLight1
            .TintAndShade = 0
            .ThemeFont = xlThemeFontMinor
        End With
    End With

     Dlig = Dlig + 2

    With Range("E" & Dlig)
        .FormulaR1C1 = "Travaux particuliers"
        .HorizontalAlignment = xlLeft
        .VerticalAlignment = xlBottom
        .ReadingOrder = xlContext
        .Font.Bold = True
        With .Font
            .Name = "Calibri"
            .Size = 10
        End With
    End With

    With Range("E" & Dlig & ":O" & Dlig)
        .Merge
        With .Interior
            .Pattern = xlSolid
            .PatternColorIndex = xlAutomatic
            .ThemeColor = xlThemeColorAccent1
            .TintAndShade = 0.399975585192419
            .PatternTintAndShade = 0
        End With
    End With

Et voici une autre partie du code qui contient du formatage (je vais le retravailler pour enlever la fonction select commme tu l'as montré)

Range("B26:D100,e41:o100").Select
    With Selection.Font
        .Name = "Calibri"
        .Size = 9
        .ThemeColor = xlThemeColorLight1
        .TintAndShade = 0
        .ThemeFont = xlThemeFontMinor
    End With

    Range("B26:D100,E26:O39,e41:o100").Select
    With Selection.Borders(xlEdgeLeft)
        .LineStyle = xlContinuous
        .ColorIndex = xlAutomatic
        .TintAndShade = 0
        .Weight = xlMedium
    End With
    With Selection.Borders(xlEdgeTop)
        .LineStyle = xlDot
        .ColorIndex = xlAutomatic
        .TintAndShade = 0
        .Weight = xlThin
    End With
    With Selection.Borders(xlEdgeBottom)
        .LineStyle = xlDot
        .ColorIndex = xlAutomatic
        .TintAndShade = 0
        .Weight = xlThin
    End With
    With Selection.Borders(xlEdgeRight)
        .LineStyle = xlContinuous
        .ColorIndex = xlAutomatic
        .TintAndShade = 0
        .Weight = xlMedium
    End With

    With Selection.Borders(xlInsideHorizontal)
        .LineStyle = xlDot
        .ColorIndex = xlAutomatic
        .TintAndShade = 0
        .Weight = xlThin
    End With

    Range("C26:C100,N26:N39,N41:N100").Select
        With Selection
            .HorizontalAlignment = xlCenter
            .VerticalAlignment = xlBottom
        End With
        

Merci

Bonjour,

Essai ainsi avec les deux codes réunis ... si ça donne le résultat attendu ....

    Dlig = Range("E" & Rows.Count).End(xlUp).Row

    With Range("E26:O" & Dlig)
        .HorizontalAlignment = xlLeft
        With .Font
            .Name = "Calibri"
            .Size = 8
            .Underline = xlUnderlineStyleNone
            .ThemeColor = xlThemeColorLight1
            .TintAndShade = 0
            .ThemeFont = xlThemeFontMinor
        End With
    End With

    Dlig = Dlig + 2

    With Range("E" & Dlig)
        .FormulaR1C1 = "Travaux particuliers"
        .HorizontalAlignment = xlLeft
        .VerticalAlignment = xlBottom
        .ReadingOrder = xlContext
        .Font.Bold = True
        With .Font
            .Name = "Calibri"
            .Size = 10
        End With
    End With

    With Range("E" & Dlig & ":O" & Dlig)
        .Merge
        With .Interior
            .Pattern = xlSolid
            .PatternColorIndex = xlAutomatic
            .ThemeColor = xlThemeColorAccent1
            .TintAndShade = 0.399975585192419
            .PatternTintAndShade = 0
        End With
    End With

    '' >>>> autre bloc
    With Range("B26:D100,e41:o100").Font
        .Name = "Calibri"
        .Size = 9
        .ThemeColor = xlThemeColorLight1
        .TintAndShade = 0
        .ThemeFont = xlThemeFontMinor
    End With

    With Range("B26:D100,E26:O39,e41:o100")
        With .Borders(xlEdgeLeft)
            .LineStyle = xlContinuous
            .ColorIndex = xlAutomatic
            .TintAndShade = 0
            .Weight = xlMedium
        End With

        With .Borders(xlEdgeTop)
            .LineStyle = xlDot
            .ColorIndex = xlAutomatic
            .TintAndShade = 0
            .Weight = xlThin
        End With

        With .Borders(xlEdgeBottom)
            .LineStyle = xlDot
            .ColorIndex = xlAutomatic
            .TintAndShade = 0
            .Weight = xlThin
        End With

        With .Borders(xlEdgeRight)
            .LineStyle = xlContinuous
            .ColorIndex = xlAutomatic
            .TintAndShade = 0
            .Weight = xlMedium
        End With

        With .Borders(xlInsideHorizontal)
            .LineStyle = xlDot
            .ColorIndex = xlAutomatic
            .TintAndShade = 0
            .Weight = xlThin
        End With
    End With

    With Range("C26:C100,N26:N39,N41:N100")
        .HorizontalAlignment = xlCenter
        .VerticalAlignment = xlBottom
    End With

ric

Merci ric

c'est ok

Pour ma compréhension, qu'est qui clochait?

Aussi, je veux que la colonne O soit xlRight

J'ai donc adapter le code ainsi, les données sont alignées à droite mais la police ne suit pas

With Range("E26:N" & Dlig + 1)
        .HorizontalAlignment = xlLeft
        With .Font
            .Name = "Calibri"
            .Size = 8
            .Underline = xlUnderlineStyleNone
            .ThemeColor = xlThemeColorLight1
            .TintAndShade = 0
            .ThemeFont = xlThemeFontMinor
        End With
    End With

    With Range("O" & Dlig + 1)
        .HorizontalAlignment = xlRight
        With .Font
            .Name = "Calibri"
            .Size = 8
            .Underline = xlUnderlineStyleNone
            .ThemeColor = xlThemeColorLight1
            .TintAndShade = 0
            .ThemeFont = xlThemeFontMinor
        End With

    End With

Ric, J'ai réussis en ajoutant ce code

With Range("O26:O39")
        .HorizontalAlignment = xlRight
        .VerticalAlignment = xlBottom
    End With

Merci beaucoup ric, ton aide est très apprécié

Avant d'inscrire résolu, si tu peux me dire ce qui clochait,

Merci

...

Pour ma compréhension, qu'est qui clochait?

Sincèrement, je ne sais pas. Le nettoyage du code a corrigé le souci.

... Aussi, je veux que la colonne O soit xlRight

J'ai donc adapter le code ainsi, les données sont alignées à droite mais la police ne suit pas ...

La police ne suit pas ... mais, elle pourrait suivre selon l'ordre des actions.

À une étape, il y a With Range("B26:D100,E26:O39,e41:o100")

Si cette étape arrive après, elle écrase ce qui précède.

Pour des fins de déboggage ... ajoute des .select sous les with "plage" ainsi ...

 ...
 ...
  With Range("B26:D100,E26:O39,e41:o100")
     .select
        With .Borders(xlEdgeLeft)

[/code]

Puis, tu exécutes le code en mode pas à pas ( touche F8 ). Les plages où appliquer le code seront sélectionnées. Ainsi, tu trouveras les erreurs et tu pourras déplacer ou corriger les traitements afin d'obtenir les résultats voulus.

Une fois satisfait du résultat ... supprime les .Select (important) pour revenir à un déroulement normal et plus rapide du code.

ric

Merci beaucoup ric

C'est vraiment apprécié

Sujet résolu

Rechercher des sujets similaires à "selection derniere ligne plage"