VBA Excel - Paramétrage automatique du quadrillage d'un tableau [Résolu]

Messages postés
44
Date d'inscription
jeudi 8 décembre 2011
Dernière intervention
14 mars 2012
- - Dernière réponse : ucfoutu
Messages postés
18039
Date d'inscription
lundi 7 décembre 2009
Statut
Contributeur
Dernière intervention
11 avril 2018
- 29 janv. 2012 à 00:55
Bonjour,

J'ai une question concernant le quadrillage automatique d'un tableau.
J'ai écrit un code qui permet de quadriller un tableau avec une boucle en For - Next.
J'aimerai transformer cette boucle "for next" en boucle "While Wend". Autrement dit, dès lors que la cellule est vide, alors on stop le quadrillage.
J'ai tenté de faire la modification, mais sans succès...

Voici mon code actuel :

.....................................
With Worksheets("Calcul")
For i = 12 To 100
For j = 1 To 7

If .Cells(i, j) <> "" Then
With Worksheets("Calcul").Cells(i, j).Borders(xlEdgeLeft)
.LineStyle = xlContinuous
.Weight = xlThin
.ColorIndex = 1
End With
With Worksheets("Calcul").Cells(i, j).Borders(xlEdgeTop)
.LineStyle = xlContinuous
.Weight = xlThin
.ColorIndex = 1
End With
With Worksheets("Calcul").Cells(i, j).Borders(xlEdgeBottom)
.LineStyle = xlContinuous
.Weight = xlThin
.ColorIndex = 1
End With
With Worksheets("Calcul").Cells(i, j).Borders(xlEdgeRight)
.LineStyle = xlContinuous
.Weight = xlThin
.ColorIndex = 1
End With

End If
Next j
Next i
End With

.................................................

Merci d'avance
Afficher la suite 

Votre réponse

11 réponses

Meilleure réponse
Messages postés
18039
Date d'inscription
lundi 7 décembre 2009
Statut
Contributeur
Dernière intervention
11 avril 2018
3
Merci
et soudain : présence, mais grand silence

alors regarde ce que ferait ceci :
With Worksheets("Feuil1").UsedRange.Borders
  .LineStyle = xlContinuous
  .Weight = xlThin
  .ColorIndex = 3
End With

ici, j'ai utilisé le usedrange, comme exemple.
Tu pourrais utiliser toute autre plage.

____________________
Réponse exacte ? => "REPONSE ACCEPTEE" pour faciliter les recherches d'autres forumeurs.
Pas d'aide en ligne installée ? ==> ne comptez pas sur moi pour simplement vous dire ce qu'elle contient

Dire « Merci » 3

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources 96 internautes nous ont dit merci ce mois-ci

Commenter la réponse de ucfoutu
Messages postés
18039
Date d'inscription
lundi 7 décembre 2009
Statut
Contributeur
Dernière intervention
11 avril 2018
0
Merci
Bonjour,
Qu'entends-tu exactement par "dès que la cellule est vide" ?
Car "dès que" est une chose et "si" en est une autre !


____________________
Réponse exacte ? => "REPONSE ACCEPTEE" pour faciliter les recherches d'autres forumeurs.
Pas d'aide en ligne installée ? ==> ne comptez pas sur moi pour simplement vous dire ce qu'elle contient
Commenter la réponse de ucfoutu
Messages postés
44
Date d'inscription
jeudi 8 décembre 2011
Dernière intervention
14 mars 2012
0
Merci
Plutot "dès que" je dirais.. Une écriture de ce genre : While .Cells(i, j) <> "".
Mon objectif est de remplacer mon if par une boucle de type while wend ou autre afin d'éviter de paramétrer mes lignes et mes colonnes (variable i et j).
Commenter la réponse de talined
Messages postés
18039
Date d'inscription
lundi 7 décembre 2009
Statut
Contributeur
Dernière intervention
11 avril 2018
0
Merci
Ah !
et ... tu arrêtes ta boucle où, si par exemple la cellule B10 est vide alors que la ligne 20 a toutes ses cellules remplies de la colonne A à la colonne D ?
tu cesses de quadriller quand et où ?


____________________
Réponse exacte ? => "REPONSE ACCEPTEE" pour faciliter les recherches d'autres forumeurs.
Pas d'aide en ligne installée ? ==> ne comptez pas sur moi pour simplement vous dire ce qu'elle contient
Commenter la réponse de ucfoutu
Messages postés
44
Date d'inscription
jeudi 8 décembre 2011
Dernière intervention
14 mars 2012
0
Merci
c'est impossible car j'ai un bouton qui me permet d'ajouter des lignes entières les unes après les autres donc j'ai pas ce probleme la..
Mes lignes de A à G sont donc forcément remplies..

Du coup j'arrete la boucle quand la ligne de ma premiere colonne est vide..

Tu me suis?

Merci
Commenter la réponse de talined
Messages postés
18039
Date d'inscription
lundi 7 décembre 2009
Statut
Contributeur
Dernière intervention
11 avril 2018
0
Merci
je te suis si tu veux ...
Et toi ? me suis-tu ?
Tu pourrais utiliser toute autre plage

et alors ? Définis donc ta plage

____________________
Réponse exacte ? => "REPONSE ACCEPTEE" pour faciliter les recherches d'autres forumeurs.
Pas d'aide en ligne installée ? ==> ne comptez pas sur moi pour simplement vous dire ce qu'elle contient
Commenter la réponse de ucfoutu
Messages postés
44
Date d'inscription
jeudi 8 décembre 2011
Dernière intervention
14 mars 2012
0
Merci
C'est parfait!!

Desolé, je n'avais encore reçu ton message..
Un code qui simplifie bien la vie!!

Merci encore.
Commenter la réponse de talined
Messages postés
44
Date d'inscription
jeudi 8 décembre 2011
Dernière intervention
14 mars 2012
0
Merci
Bonsoir,

Je reviens vers toi concernant la formule que tu m'a donné ci-dessus.
Elle marche à merveille pour l'un de mes tableaux, mais pour mon second tableau, j'ai des données qui sont réparti un peu partout dans la feuille, donc du coup, le cadrillage s'effectue partout..

Comme je te le disais, je souhaite paramétrer mon cadrillage de la colonne A à G,
et de la ligne 7 jusqu'à la première que l'on trouve vide..
Comment je peux exprimer cette condition sous forme de boucle? ( sachant que je ne veux pas la boucle de type for next car obligé de définir un nombre limite de ligne à parcourir...)

Merci bcp.
Commenter la réponse de talined
Messages postés
18039
Date d'inscription
lundi 7 décembre 2009
Statut
Contributeur
Dernière intervention
11 avril 2018
0
Merci
Et alors ?
Bis repetita ===>>
Tu pourrais utiliser toute autre plage


qu'attends-tu pour définir la plage concernée, puis lui appliquer la chose ?
soit plage la plage :
With Worksheets("Feuil1").plage.Borders
  .LineStyle = xlContinuous
  .Weight = xlThin
  .ColorIndex = 3
End With

____________________
Réponse exacte ? => "REPONSE ACCEPTEE" pour faciliter les recherches d'autres forumeurs.
Pas d'aide en ligne installée ? ==> ne comptez pas sur moi pour simplement vous dire ce qu'elle contient
Commenter la réponse de ucfoutu
Messages postés
44
Date d'inscription
jeudi 8 décembre 2011
Dernière intervention
14 mars 2012
0
Merci
D'accord, mais je connais pas justement la plage car je peux enregistrer 10 lignes dans mon tableau comme 1000 lignes donc je vois comment je peux la définir avec cette méthode..

A moins que je puisse paramétrer ma plage de la ligne 7 jusqu'à ma premiere cellule vide rencontrée?

Merci
Commenter la réponse de talined
Messages postés
18039
Date d'inscription
lundi 7 décembre 2009
Statut
Contributeur
Dernière intervention
11 avril 2018
0
Merci
Dis-moi, toi ...
Tu ne charrierais pas un peu ?
il faut tout faire à ta place ?
Exemple, donc (et le dernier... tout de même !)

Dim plage As Range
  With Worksheets("Feuil1")
    juska = .Range("A7:A" & Rows.Count).SpecialCells(xlCellTypeBlanks).Row - 1
    Set plage = .Range("A7:G" & juska)
    With plage.Borders
      .LineStyle = xlContinuous
      .Weight = xlThin
      .ColorIndex = 3
     End With
  End With


____________________
Réponse exacte ? => "REPONSE ACCEPTEE" pour faciliter les recherches d'autres forumeurs.
Pas d'aide en ligne installée ? ==> ne comptez pas sur moi pour simplement vous dire ce qu'elle contient
Commenter la réponse de ucfoutu

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.