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 05/01/2012, 12h27   #1
Invité régulier
 
Inscription : juin 2010
Messages : 26
Détails du profil
Informations forums :
Inscription : juin 2010
Messages : 26
Points : 5
Points : 5
Par défaut Actions sur une sélection

Bonjour à tous!

Je vous souhaite déjà une très bonne année 2012!

Hier j'ai commencé à faire du VBA pour la première fois et merci Google pour l'aide qu'il m'apporte . Mais là j'ai soucis que n'arrive pas à régler.

En fait, j'ai une sélection qui n'est pas fixe et je voudrais faire plusieurs actions.

1er actions : Trouver la valeur max ==> j'ai réussi

2ème action : Prendre l'adresse de la dernière colonne de cette sélection ==> je n'y arrive pas

3ème action : Changer la mise en forme de cette sélection et mettre en pourcentage l'affichage des chiffres ==> je n’ai pas encore cherché mais si vous avez des informations, je suis preneur.

Je vais mettre le code que j'ai réalisé, il n'est pas du tout optimisé et va surement faire mal au yeux à bon nombre d'entre vous .

Merci d'avance pour votre aide

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
Sub TEST()
 
    ' Cherche une cellule où est marquée Total
    Dim Maximum As Single
    Dim Plage As Range, c As Range
    Dim Address As String
 
    Cells.Find(What:="Total").Select
    ActiveCell.Offset(1, 1).Range("A1", "A2").Select
    Selection.Copy
    ActiveCell.Offset(4, 0).Range("A1").Select
    ActiveSheet.Paste
 
    Cells.Find(What:="Total").Select
    ActiveCell.Offset(2, 2).Range("A1").Select
    Range(ActiveCell, ActiveCell.End(xlToRight)).Select
    ' Premiere Action : trouver la valeur max
    Maximum = Application.WorksheetFunction.Max(Range(ActiveCell, ActiveCell.End(xlToRight)))
 
 
    ' Deuxième action : Prendre l'adresse de la dernière colone de cette selection
 
 
 
    ' 3ème action : Changer la mise en forme de cette selection
M_saun est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 05/01/2012, 13h47   #2
Expert Confirmé Sénior
 
Avatar de jfontaine
 
Homme Jérôme FONTAINE
Contrôleur de Gestion
Inscription : juin 2006
Messages : 3 919
Détails du profil
Informations personnelles :
Nom : Homme Jérôme FONTAINE
Âge : 38
Localisation : France, Sarthe (Pays de la Loire)

Informations professionnelles :
Activité : Contrôleur de Gestion

Informations forums :
Inscription : juin 2006
Messages : 3 919
Points : 7 232
Points : 7 232
Bonjour,


Citation:
2ème action : Prendre l'adresse de la dernière colonne de cette sélection
Tu n'étais pas loin
Code :
ActiveCell.End(xlToRight).Address
Citation:
Changer la mise en forme de cette sélection et mettre en pourcentage l'affichage des chiffres
Je te conseillerais d'utiliser l'enregistreur de macro. Cela te mettra sur la voix
__________________
Jérôme

Citation:
"Ils ne savaient pas que c'était impossible, alors ils l'ont fait" - Marc Twain
Si la réponse répond à votre besoin, votre vote nous encouragera.
Dans le cas ou la réponse mérite, à vos yeux, un , nous faire partager la raison de ce vote, pourrait nous permettre de nous améliorer.
jfontaine est actuellement connecté   Envoyer un message privé Réponse avec citation 00
Vieux 05/01/2012, 16h09   #3
Invité régulier
 
Inscription : juin 2010
Messages : 26
Détails du profil
Informations forums :
Inscription : juin 2010
Messages : 26
Points : 5
Points : 5
Merci!!!

J'y arrive tout doucement.

je vous met le code a jour :

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
Sub TEST()
 
    ' Cherche une cellule où est marquée Total
    Dim Maximum As Single
    Dim Plage As Range, c As Range
    Dim Address As String
    Dim Address2 As String
    Cells.Find(What:="Total").Select
    ActiveCell.Offset(1, 1).Range("A1", "A2").Select
    Selection.Copy
    ActiveCell.Offset(4, 0).Range("A1").Select
    ActiveSheet.Paste
 
    Cells.Find(What:="Total").Select
    ActiveCell.Offset(2, 2).Range("A1").Select
    Range(ActiveCell, ActiveCell.End(xlToRight)).Select
    ' Premiere Action : trouver la valeur max
    Maximum = Application.WorksheetFunction.Max(Range(ActiveCell, ActiveCell.End(xlToRight)))
 
    ' Deuxième action : Prendre l'adresse de la dernière colone de cette selection
    Address = ActiveCell.End(xlToRight).Address
 
 
    ' 3ème action : Changer la mise en forme de cette selection
    Selection.NumberFormat = "0.00%"
    Range(ActiveCell, ActiveCell.End(xlToRight)).Select
 
 
    Cells.Find(What:="Total").Select
    ActiveCell.Offset(6, 2).Select
    ActiveCell.FormulaR1C1 = "=R[-4]C/ Maximum "   Address = ActiveCell.Address
    Selection.AutoFill Destination:=Range(ActiveCell, ActiveCell.End(xlToRight)), Type:=xlFillDefault
 
 
   End Sub
J'ai un soucis sur la ligne 31 :

a savoir ==>
Code :
ActiveCell.FormulaR1C1 = "=R[-4]C/ Maximum "
Sur mon tableau là ou il devrait y avoir un chiffre j'ai #NAME?
Pourtant j'ai déclaré une variable Maximum...
Je ne comprend pas tout

Merci d'avance.
M_saun est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 05/01/2012, 17h07   #4
Expert Confirmé Sénior
 
Avatar de jfontaine
 
Homme Jérôme FONTAINE
Contrôleur de Gestion
Inscription : juin 2006
Messages : 3 919
Détails du profil
Informations personnelles :
Nom : Homme Jérôme FONTAINE
Âge : 38
Localisation : France, Sarthe (Pays de la Loire)

Informations professionnelles :
Activité : Contrôleur de Gestion

Informations forums :
Inscription : juin 2006
Messages : 3 919
Points : 7 232
Points : 7 232
Maximum est une variable VBA. Dans ton code tu fais référence à une plage nommée "Maximum"

Essais comme cela
Code :
ActiveCell.FormulaR1C1 = "=R[-4]C/" & Maximum
__________________
Jérôme

Citation:
"Ils ne savaient pas que c'était impossible, alors ils l'ont fait" - Marc Twain
Si la réponse répond à votre besoin, votre vote nous encouragera.
Dans le cas ou la réponse mérite, à vos yeux, un , nous faire partager la raison de ce vote, pourrait nous permettre de nous améliorer.
jfontaine est actuellement connecté   Envoyer un message privé Réponse avec citation 00
Vieux 06/01/2012, 13h27   #5
Invité régulier
 
Inscription : juin 2010
Messages : 26
Détails du profil
Informations forums :
Inscription : juin 2010
Messages : 26
Points : 5
Points : 5
Merci

Bonne journée
M_saun est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 21h02.


 
 
 
 
Partenaires

Hébergement Web