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