Macro mise en forme de cellule

Résolu
VanFrancesco - 13 juin 2014 à 10:45
jordane45 Messages postés 36339 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 27 septembre 2022 - 13 juin 2014 à 14:54
Bonjour,

Je voudrais créer une macro pour la mise en forme de cellules, la mise en forme conditionnelle n'a pas assez d'options, ce qui est dommage car il manque un seul truc pour que je l'utilise : les bordures gras.
Voilà, imaginons que j'ai crée un tableau excel 2010 de taille 4*4. J'ai donc toutes les bordures fines dans le tableau et les bordures en gras tout autour.
Si je veux crée une 5ème ligne, je voudrais que les bordures soient faites automatiquement, c'est à dire 3 bordures fines (haut, droite, gauche) et une bordure en gras (bas) pour la cellule de la 5ème ligne de la 1ère colonne.
Grâce à l'enregistrement de macro, j'ai le code pour créer les bordures mais je veux créer la condition : "Si la cellule est différente de "" alors créer bordures".

Autre question : Est-il possible d'appliquer une macro différente pour chaque colonne ?

Merci d'avance

VanFrancesco

5 réponses

eriiic Messages postés 24449 Date d'inscription mardi 11 septembre 2007 Statut Contributeur Dernière intervention 27 septembre 2022
13 juin 2014 à 11:08
Bonjour,

Comme tu es sur 2010 si tu transformes ta plage en tableau (ruban Insertion), le simple fait d'écrire sur la ligne vide sous ton tableau l'étendra. En recopiant mises en formes (encadrements etc et MFC) et formules sur cette nouvelle ligne.

eric
0
VanFrancesco
13 juin 2014 à 11:14
Oui c'est une solution mais justement, j'aimerais savoir la solution dans le cas où je n'ai pas de tableau.

Merci quand même de ta réponse, elle me servira.
0
jordane45 Messages postés 36339 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 27 septembre 2022 350
13 juin 2014 à 11:19
Bonjour,

Private Sub Worksheet_Change(ByVal Target As Range)
  colonne = Target.Column
  ligne = Target.Row

If Target.Value <> "toto" Then
   Select Case colonne
   
   Case 1
    'ici le code pour la mise en forme colonne1
    Case 2
    'ici le code pour la mise en forme colonne2
    
    Case Else
    'ici le code pour la mise en forme autres cellules si il y a..
    
End If


End Sub

0
eriiic Messages postés 24449 Date d'inscription mardi 11 septembre 2007 Statut Contributeur Dernière intervention 27 septembre 2022
Modifié par jordane45 le 13/06/2014 à 11:31
A vrai dire je ne dois pas comprendre ta question car je ne vois pas où est la difficulté (?)
If [A5] <> "ce que tu veux" then
' ton code de mise en forme que tu as
endif


Est-il possible d'appliquer une macro différente pour chaque colonne ?
Là aussi tu dois connaitre la réponse : oui.

eric


En essayant continuellement, on finit par réussir.
Donc plus ça rate, plus on a de chances que ça marche.(les Shadoks)
En plus du merci (si si, ça se fait !!!), penser à mettre en résolu. Merci
0
jordane45 Messages postés 36339 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 27 septembre 2022 350
Modifié par jordane45 le 13/06/2014 à 11:32
Bonjour eriiic...

Merci de bien vouloir utiliser la coloration syntaxique (les balises de code) lorsque tu postes du code sur le forum.
Explications disponibles ici :
http://codes-sources.commentcamarche.net/faq/10686-le-nouveau-codes-sources-comment-ca-marche#balises-code

J'édite ton message pour les y ajouter.

Et pour CITER ... utilises les balises <block> ....blablabla < /block>
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
VanFrancesco
13 juin 2014 à 11:48
Merci de ta réponse mais je n'ai pas réussi à le faire fonctionner.
D'abord, si je veux que Excel démarre avec cette macro, je dois la mettre dans ThisWorkBook, non ?
Ensuite ça peut paraître bête mais je ne m'y connais pas trop en vba, que veut dire Target et Selection même si je pense avoir une idée ?
0
jordane45 Messages postés 36339 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 27 septembre 2022 350
13 juin 2014 à 11:53
si je veux que Excel démarre avec cette macro, je dois la mettre dans ThisWorkBook, non ?

Ben tout dépend de ce que tu veux faire ....

Lancer la mise en forme à l'ouverture du classeur (uniquement) ? dans ce cas oui...il faudra travailler avec thisWorkbook.
http://silkyroad.developpez.com/VBA/EvenementsClasseur/


Ou bien.. à chaque fois que tu modifies une cellule de ta feuille ? et dans ce cas, faire comme je te l'ai proposé et travailler avec Worksheet_Change
http://silkyroad.developpez.com/VBA/EvenementsFeuille/
que veut dire Target et Selection
Le paramètre Target correspond à la cellule modifiée
Selection .. ben ce sont les cellules sélectionnées
0
VanFrancesco
13 juin 2014 à 14:32
Merci je comprends mieux maintenant, je crois que je touche au but, il me reste une erreur : "End If sans bloc If".
0
jordane45 Messages postés 36339 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 27 septembre 2022 350
13 juin 2014 à 14:37
Ben là ... j'ai beau être doué.... sans voir ton code.. j'aurais du mal à te répondre ^^
0
VanFrancesco
13 juin 2014 à 14:44
Non c'est bon ça marche dans un sens, t'es un génie !!
Par contre si je supprime ce que j'ai mis dans ma cellule, il y a une erreur : Erreur d'exécution '13', incompatibilité de type
Lors du débogage, c'est la condition qui pose problème : If Target.Value <> " " Then
Je pense que c'est le "" mais je sais pas quoi mettre à la place. Je veux dire que dès que la cellule contient qqch, il faut mettre une bordure.
Il n'y a pas "VIDE" ou "NONVIDE" qui existe en vba ?

merci d'avance
0
jordane45 Messages postés 36339 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 27 septembre 2022 350
13 juin 2014 à 14:47
Ca fonctionne avec les "" ...
Par contre... n'aurais tu pas des cellules fusionnées ??

Eventuellement tu peux remlacer Target.value par :

If cells(target.row,target.column).value <> "" then

'.....

end if
0