Boostez vos compétences Excel avec notre communauté !
Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force.
Apprenez, échangez, progressez – et tout ça gratuitement !
👉 Inscrivez-vous maintenant !
Je galère depuis ce matin. J'ai parcouru plein de forums et je suis à 100km de réussir ce que je veux faire.
J'explique, ça n'a pas l'air trop compliqué comme ça.
J'ai un tableau qui va des colonnes "A" à "CS" (ça restera fixe comme ceci)
Pour les lignes elles sont variables et j'en ajoute de temps en temps.
Le but, tout simple est d'encadrer automatiquement chaque ligne que je rajoute (chaque cellules de la ligne)
Actuellement j'ai 35 lignes, je veux que si je me place sur la 36 ième (A36), et que je tape "j" (par exemple), toute la ligne s'encadre de "A36:CS36".
Actuellement je récupère la valeur du nombre de ligne (35) et il s'agit de la valeur :
i = Feuil2.Range("Q3").Value
à laquelle on ajouterai 1 pour connaitre le numero de ligne excel a encadrer.
J'aimerais également que cette action soit réalisée n'importe quand sans bouton (juste à la modif de la premiere case de la ligne par exemple)
Bref j'espere avoir été clair, je vous remercie par avance.
Bonjour Hasco, bonjour Tototiti et bienvenue lokomass,
A placer dans directement dans le module correspondant à ta feuille :
Code:
Private Sub Worksheet_Change(ByVal Target As Range)
With Sheets("Feuil2")
LigneAModifier = .Range("Q3").Value
For i = 1 To 97
With Cells(LigneAModifier, i)
With .Borders(xlEdgeLeft)
.LineStyle = xlContinuous
.Weight = xlThin
.ColorIndex = xlAutomatic
End With
With .Borders(xlEdgeTop)
.LineStyle = xlContinuous
.Weight = xlThin
.ColorIndex = xlAutomatic
End With
With .Borders(xlEdgeBottom)
.LineStyle = xlContinuous
.Weight = xlThin
.ColorIndex = xlAutomatic
End With
With .Borders(xlEdgeRight)
.LineStyle = xlContinuous
.Weight = xlThin
.ColorIndex = xlAutomatic
End With
End With
Next
End With
End Sub
@GeoTrouvePas🙂, petit truc plus rapide et plus court:
Code:
Private Sub Worksheet_Change(ByVal Target As Range)
Dim ligneamodifier As Long
With Sheets("Feuil2")
ligneamodifier = .Range("Q3").Value
With .Range("A" & ligneamodifier & ":CS" & ligneamodifier).Cells.Borders
.LineStyle = xlContinuous
.Weight = xlThin
.ColorIndex = xlAutomatic
End With
End With
End Sub
Bien vu Hasco !
En fait :
1) je manipule mal les sélections multiples de cellules
2) Je ne connaissais pas le ".cells.borders" (je le mets dans ma caisse à outils et je ne vais pas tarder à le ressortir, merci !)
3) J'ai horreur de désigner mes cellules avec les lettres ! ^^
en tout cas, je me coucherai moins bête ce soir. Merci
J'ai un soucis lors de l'execution du code donné ci-dessus par Hasco.
Lorsque je tape quelque chose dans la ligne en question, ça s'interrompt et m'affiche une erreur "incompatibilité de type" sur cette ligne :
"ligneamodifier = .Range("Q3").Value"
Je comprend puisque la cellule en question (Q3) fait partie de la feuille 2 (nommée "Statistiques").
Donc comment lui dire d'aller chercher dans Feuille 2 ?
J'avais également une erreur ici "With Sheets("Feuil2")"
Que j'ai remplacé par "With Sheets("Résultats Enquête")"
Il s'agit en fait de la Feuil1 mais ça ne fonctionnait pas avec le mot "Feuil1"
Bref je suis rebloqué mais encore merci pour votre aide
Edit :
J'ai réussi en faisant comme ceci.
Code:
Private Sub Worksheet_Change(ByVal Target As Range)
Dim ligneamodifier As Long
With Sheets("Résultats Enquête")
ligneamodifier = Feuil2.Range("Q3").Value
With .Range("A" & ligneamodifier & ":CS" & ligneamodifier).Cells.Borders
.LineStyle = xlContinuous
.Weight = xlThin
.ColorIndex = xlAutomatic
End With
End With
End Sub
Private Sub Worksheet_Change(ByVal Target As Range)
Dim ligneamodifier As Long
With Sheets("Résultats Enquête")
ligneamodifier = Sheets("Statistiques").Range("Q3").Value
With .Range("A" & ligneamodifier & ":CS" & ligneamodifier).Cells.Borders
.LineStyle = xlContinuous
.Weight = xlThin
.ColorIndex = xlAutomatic
End With
End With
End Sub
Lorsque tu veux employer le nom de la feuille tel qu'il apparait dans l'onglet en dessous des cellules: Sheets("NomDeLaFeuille").range("A1")
Lorsque tu veux employer le nom interne (le CodeName) de la feuille:
FeuilX.Range("A1") où FeuilX est le nom qui apparait en face de la propriété Name (entourée de parenthèses) dans la feuille de propriété de l'éditeur de code.
P.S. être bloqué quand on débute en vba est une chose normale.
- Navigue sans publicité - Accède à Cléa, notre assistante IA experte Excel... et pas que... - Profite de fonctionnalités exclusives Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel. Je deviens Supporter XLD
Assurez vous de marquer un message comme solution pour une meilleure transparence.