Précédent   Forum des professionnels en informatique > Logiciels > Microsoft Office > Excel > Macros et VBA Excel
Macros et VBA Excel Vos questions relatives aux macros Excel, à l'utilisation de VBA et à l'automatisation de vos classeurs Excel.
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
Vieux 11/03/2010, 19h55   #1
Invité de passage
 
treza azzrer
Inscription : mars 2010
Messages : 11
Détails du profil
Informations personnelles :
Nom : treza azzrer

Informations forums :
Inscription : mars 2010
Messages : 11
Points : 0
Points : 0
Par défaut Besoin d'aide pour finaliser Macro mise en forme + bordure

Bonjour a tous,

Je vous expose mon problème :

J’ai la macro ci-jointe (que j’ai pu construire avec l’aide de ce forum) dans le fichier ‘données’ qui me recopie les lignes quand je double clique dessus en colonne ’A’, et me place certaine données dans un second tableau ‘NOMEF’, dans les onglets correspondants au colonnes ‘M1, R01 à R8, M2’ (dans l’exemple j’ai réduit le nombre d’onglet à M01,R01,R02 pour alléger la taille du fichier).
Jusque la tout fonctionne.

Ensuite je voudrais ajouter une bordure et une mise en forme à la ligne qui vient de s’ajouter dans le second tableau et la ça ne fonctionne pas..
Dans mon exemple j’ai simplifié uniquement à un cadre, mais en réalité (je fais bien plus de mises en forme que ça… et je souhaiterais réaliser la mise en forme par macro)

Ps : le nombre de lignes sera différent d’un onglet à l’autre.

J’ai essayé différentes méthodes mais sans succès :
(je suis passé par un module, j’ai essayé de placer la mise en forme dans le code)
-soit ça a marché mais uniquement dans le premier onglet,
-soit il ma mi un cadre sur tout les onglets, mais sur une même ligne pour tous les onglets, ce qui ne correspond pas a la dernière ligne dans tous mes onglets.

Si des connaisseurs pouvaient me donné un coup de main.
Merci d’avance pour votre aide.
Salutations Warrio

Dernière modification par Pierre Fauconnier ; 11/03/2010 à 21h25. Motif: Suppression de la pièce jointe, inutile à ce stade. Il est préférable de détailler UN problème par discussion...
warrio67 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 11/03/2010, 21h02   #2
Expert Confirmé Sénior
 
Avatar de Qwazerty
 
Homme Stéphane
La très haute tension :D
Inscription : avril 2002
Messages : 2 431
Détails du profil
Informations personnelles :
Nom : Homme Stéphane
Âge : 31
Localisation : France

Informations professionnelles :
Activité : La très haute tension :D
Secteur : Service public

Informations forums :
Inscription : avril 2002
Messages : 2 431
Points : 4 042
Points : 4 042
Envoyer un message via MSN à Qwazerty
Salut et bienvenu
Bon c'est un peu le bazar, alors voici quelques infos.
Il n'est pas utile de sélectionner ou activer une feuille ou une cellule pour travailler dessus, les "Select" et "Activate" sont donc a bannir.
Si tu veux faire une mise en forme sur plusieurs feuilles en même temps mais que les tableaux sont de longueur différentes, il te faut travailler feuille par feuille, idéalement avec une boucle "For "voir "For Each".
Il est préférable de déterminer sur quel classeur tu travailles plutôt que de compter sur le faite que celui ci va rester le classeur actif.
Bien indenter sont code (mettre des tabulations au bons endroits) permet une meilleur lisibilité.
Ne pas hésiter a commenter copieusement le code afin de retrouver ses petits dans quelques semaines/mois/années quand tu vas vouloir retoucher ton code.

En suivant ces quelques "règles" voici un bout de code retravaillé a partir de ce que tu as donné

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
Sub essai()
Dim TheSh As Worksheet
Dim Wb As Workbook
'Windows("Nomenclature.xls").Activate
 
'Sheets(Array("M01", "R01", "R02", "R03", "R04", "R05", "R06", "R07", "R08", "M02")).Select
 
'Sheets("M01").Activate
'With Sheets(PdT)
 
'On defini le classeur sur lequel on travail
Set Wb = Workbooks("NOMEF.xls")
'On boucle sur toutes les feuilles
For Each TheSh In Wb.Sheets(Array("M01", "R01", "R02")) ', "R03", "R04", "R05", "R06", "R07", "R08", "M02"))
 
    With TheSh
        'On determine la derniere ligne de cette feuille
        w = .Cells(Rows.Count, "A").End(xlUp).Row
 
        With .Range("A2", "Q" & w)
            With .Font
                .Name = "Arial"
                .Size = 10
                .ColorIndex = xlAutomatic
            End With
 
            With .Borders 'permet de travailler les tous les entourages d'une cellule ou d'un groupe de cellules d'un coup
                .LineStyle = xlContinuous
                .Weight = xlThin
                .ColorIndex = xlAutomatic
            End With
 
        End With
 
        With .Range("H2", "J" & w).Interior
            .ColorIndex = 35
            .Pattern = xlSolid
        End With
 
        With .Range("K2", "O" & w).Interior
            .ColorIndex = 36
            .Pattern = xlSolid
        End With
 
        With .Range("P2", "U" & w).Interior
            .ColorIndex = 15
            .Pattern = xlSolid
        End With
 
        With .Range("V2", "W" & w).Interior
            .ColorIndex = 38
            .Pattern = xlSolid
        End With
    End With
Next
' Range("A5").Select
'heets("M01").Activate
'End With
 
End Sub
A++
Qwaz
__________________

MagicQwaz := Harry Potter la baguette en moins
Le monde dans lequel on vit
HammerFest
Score PowerBall Gyroscope Green : 11847
Qwazerty est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 11/03/2010, 23h57   #3
Membre Expert
 
Inscription : juillet 2007
Messages : 2 134
Détails du profil
Informations forums :
Inscription : juillet 2007
Messages : 2 134
Points : 2 154
Points : 2 154
Salut warrio67 et le forum
Citation:
J’ai la macro ci-jointe
Code invisible, c'est ça ???
Citation:
J’ai essayé différentes méthodes mais sans succès :
(je suis passé par un module, j’ai essayé de placer la mise en forme dans le code)
-soit ça a marché mais uniquement dans le premier onglet,
-soit il ma mi un cadre sur tout les onglets, mais sur une même ligne pour tous les onglets, ce qui ne correspond pas a la dernière ligne dans tous mes onglets.
Quel module ? Un module de classe feuille, ThisWorkBook, ou un module général ?
S'il met le même cadre quelque soit l'onglet, c'est que soit il est en "Dur", soit il n'est calculé qu'une fois sur les données du premier onglet et n'est pas re calculé à chaque nouvel onglet.

Mais sans données....

Un doute m'assaille... Nombre de poste: 1 et (que j’ai pu construire avec l’aide de ce forum) me semble assez antinomique.
A+
Gorfael est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 12/03/2010, 05h23   #4
Invité de passage
 
treza azzrer
Inscription : mars 2010
Messages : 11
Détails du profil
Informations personnelles :
Nom : treza azzrer

Informations forums :
Inscription : mars 2010
Messages : 11
Points : 0
Points : 0
Bonjour,
Un grand merci a tous,

C'est super ca marche enfin, je vais pouvoir avancer dans mes travaux.

Qwazerty : j'ai utiliser ton code et c'est nickel.

Gorfael : Quand je parlais de construction avec l'aide de ce forum, jel 'entendais en rapport aux différents posts déja existant sur le forum qui mon permis de construire mon code.

Grand merci au forum, et a developpez
Slts

Dernière modification par AlainTech ; 08/05/2010 à 14h34. Motif: Fusion de 2 messages identiques
warrio67 est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +1. Il est actuellement 06h22.


 
 
 
 
Partenaires

Hébergement Web