Macro mise en forme de cellule [Résolu]

- 13 juin 2014 à 10:45 - Dernière réponse :
Messages postés
23273
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
18 novembre 2018
- 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
Afficher la suite 

Votre réponse

14 réponses

Messages postés
22159
Date d'inscription
mardi 11 septembre 2007
Statut
Contributeur
Dernière intervention
18 novembre 2018
- 13 juin 2014 à 11:08
0
Merci
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
Commenter la réponse de eriiic
- 13 juin 2014 à 11:14
0
Merci
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.
Commenter la réponse de VanFrancesco
Messages postés
23273
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
18 novembre 2018
- 13 juin 2014 à 11:19
0
Merci
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

Commenter la réponse de jordane45
Messages postés
22159
Date d'inscription
mardi 11 septembre 2007
Statut
Contributeur
Dernière intervention
18 novembre 2018
- Modifié par jordane45 le 13/06/2014 à 11:31
0
Merci
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
Messages postés
23273
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
18 novembre 2018
- 13 juin 2014 à 11:31
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>
Commenter la réponse de eriiic
- 13 juin 2014 à 11:48
0
Merci
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 ?
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
Messages postés
23273
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
18 novembre 2018
- 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
Messages postés
23273
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
18 novembre 2018
- 13 juin 2014 à 14:51
Il existe aussi la méthode : IsEmpty

Voila trois façons de faire :

Private Sub Worksheet_SelectionChange(ByVal Target As Range)


Debug.Print " target : " & Target.Address & " => " & Cells(Target.Row, Target.Column).Value


If Cells(Target.Row, Target.Column).Value <> "" Then
 MsgBox "ok1"
End If

If Cells(Target.Row, Target.Column).Value <> Empty Then
 MsgBox "ok2"
End If

If Not IsEmpty(Cells(Target.Row, Target.Column).Value) Then
 MsgBox "ok3"
End If

End Sub

Non aucune cellule n'est fusionnée et je viens de trouver la solution IsEmpty sur internet, merci beaucoup ça marche du tonnerre ! ;-)
Messages postés
23273
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
18 novembre 2018
- 13 juin 2014 à 14:54
Bonjour,
Si la question est résolue..
Merci de ne pas oublier de clôturer le sujet
(en cliquant sur le lien "Marquer comme résolu" qui se trouve sous le titre de la question)

Cordialement,
Jordane
Commenter la réponse de VanFrancesco

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.