OVH Cloud OVH Cloud

macro et mfc

21 réponses
Avatar
Marc T
Bonjour,
j'ai une macro qui extrait des donn=E9es et les r=E9percutent sur d'autres
onglets qu'elle cr=E9e.
par contre, j'ai voulu mettre une mfc sur la colonne qu'elle utilise
pour cr=E9er et l=E0 =E7a ne marche plus !!! pourquoi ?
merci de m'aider
bonne journ=E9e =E0 tous
MarcT

10 réponses

1 2 3
Avatar
Francois L
Marc T a écrit :

Re,

Je dirai que la version suivante devrait fonctionner

Sheets("BD").Activate
Application.Volatile

Set Rng = Range("H2", "H" & Range("H65535").End(xlUp).Row)
For Each c In Rng
a = Application.CountIf(Rng, c.Value)
b = Application.CountIf(Range("H2", c), c.Value)
If a > 1 And b = 1 Then

c.Activate
Run ("extrait")
End If

Next
'
End Sub


--
François L


On 28 juin, 17:36, Marc T wrote:
ReRebonjour,

La MEFC permet de mettre en couleur la 1er fois qu'apparait un chiffre
voila la macro corrigé avec tes conseils mais ça bloque en
disant:"erreur de compilation, la variable For déjà utilisé"
meci de ton aide
@+
MarcT



j'ai pas mis la macro !!!!

Sub Classes()


Sheets("BD").Activate
Application.Volatile
For Each c In Worksheets("BD").Range("H2", "H" &
Range("H65535").End(xlUp).Row)
Set Rng = Range("H2", "H" & Range("H65535").End(xlUp).Row)
For Each c In Rng
a = Application.CountIf(Rng, c.Value)
b = Application.CountIf(Range("H2", c), c.Value)
If a > 1 And b = 1 Then
If c.Interior.ColorIndex = 4 Then
c.Activate
Run ("extrait")
End If
Sheets("BD").Activate
Next
'
End Sub


Avatar
Marc T
On 28 juin, 18:53, Francois L
wrote:
Marc T a écrit :

Re,

Je dirai que la version suivante devrait fonctionner

Sheets("BD").Activate
Application.Volatile

Set Rng = Range("H2", "H" & Range("H65535").End(xlUp).Row)
For Each c In Rng
a = Application.CountIf(Rng, c.Value)
b = Application.CountIf(Range("H2", c), c.Value)
If a > 1 And b = 1 Then

c.Activate
Run ("extrait")
End If

Next
'
End Sub

--
François L

> On 28 juin, 17:36, Marc T wrote:
>> ReRebonjour,

>> La MEFC permet de mettre en couleur la 1er fois qu'apparait un chiffre
>> voila la macro corrigé avec tes conseils mais ça bloque en
>> disant:"erreur de compilation, la variable For déjà utilisé"
>> meci de ton aide
>> @+
>> MarcT

> j'ai pas mis la macro !!!!

> Sub Classes()

> Sheets("BD").Activate
> Application.Volatile
> For Each c In Worksheets("BD").Range("H2", "H" &
> Range("H65535").End(xlUp).Row)
> Set Rng = Range("H2", "H" & Range("H65535").End(xlUp).Row)
> For Each c In Rng
> a = Application.CountIf(Rng, c.Value)
> b = Application.CountIf(Range("H2", c), c.Value)
> If a > 1 And b = 1 Then
> If c.Interior.ColorIndex = 4 Then
> c.Activate
> Run ("extrait")
> End If
> Sheets("BD").Activate
> Next
> '
> End Sub



Bonsoir François,
j'ai eu un souci d'ordi et n'ai pu regarder qu'aujourd'hui !!!
merci de ta réponse mais ça bloque ...
j'ai le message suivant
erreur d'exécution 1004
la méthode Range de l'objet global a échoué
merci beaucoup pour ton aide
@+
Marc
Avatar
Francois L
Marc T a écrit :

Bonjour,

?? ça bloque sur le Set rng ?

--
François L



Bonsoir François,
j'ai eu un souci d'ordi et n'ai pu regarder qu'aujourd'hui !!!
merci de ta réponse mais ça bloque ...
j'ai le message suivant
erreur d'exécution 1004
la méthode Range de l'objet global a échoué
merci beaucoup pour ton aide
@+
Marc


Avatar
Marc T
On 2 juil, 07:32, Francois L
wrote:
Marc T a écrit :

Bonjour,

?? ça bloque sur le Set rng ?

--
François L



> Bonsoir François,
> j'ai eu un souci d'ordi et n'ai pu regarder qu'aujourd'hui !!!
> merci de ta réponse mais ça bloque ...
> j'ai le message suivant
> erreur d'exécution 1004
> la méthode Range de l'objet global a échoué
> merci beaucoup pour ton aide
> @+
> Marc



Bonjour,
je sais pas ou ça bloque ...
jai juste le message dont je t'ai parlé
merci encore
Marc
Avatar
Francois L
Marc T a écrit :

Re,

Exécutes la macro à partir de l'éditeur Visual Basic, tu vas voir ou ça
bloque.

Eventuellement, après nettoyage des éléments confidentiels, met une
exemple de ton classeur sur Cjoint.

--
François L



Bonjour,
je sais pas ou ça bloque ...
jai juste le message dont je t'ai parlé
merci encore
Marc


Avatar
Marc T
Salut François

ça bloque ici:
b = Application.CountIf(Range("H2", c), c.Value)
j'ai mis le classeur sur cjoint:
http://cjoint.com/?hfknzGNGMf
merci encore de ton aide
@+
Marc
Avatar
Francois L
Marc T a écrit :

Bonjour,

Sub Classes()
Sheets("BD").Activate
Application.Volatile

Set Rng = Range("H2", "H" & Range("H65535").End(xlUp).Row)
For Each c In Rng
adr = c.Address
a = Application.CountIf(Rng, c.Value)
b = Application.CountIf(Range("H2", adr), c.Value)
If a > 1 And b = 1 Then

c.Activate
Run ("extrait")
End If

Next
'
End Sub



Maintenant reste à savoir si les conditions de la macro répondent bien à
ce qui est attendu... mais ça c'est une autre question.


--
François L


Salut François

ça bloque ici:
b = Application.CountIf(Range("H2", c), c.Value)
j'ai mis le classeur sur cjoint:
http://cjoint.com/?hfknzGNGMf
merci encore de ton aide
@+
Marc



Avatar
Marc T
On 5 juil, 10:22, Francois L
wrote:
Marc T a écrit :

Bonjour,

Sub Classes()
Sheets("BD").Activate
Application.Volatile

Set Rng = Range("H2", "H" & Range("H65535").End(xlUp).Row)
For Each c In Rng
adr = c.Address
a = Application.CountIf(Rng, c.Value)
b = Application.CountIf(Range("H2", adr), c.Value)
If a > 1 And b = 1 Then

c.Activate
Run ("extrait")
End If

Next
'
End Sub

Maintenant reste à savoir si les conditions de la macro répondent bie n à
ce qui est attendu... mais ça c'est une autre question.

--
François L



Rebonjour,
effectivement ça ne réponds pas !!!
je vais essayer de préciser:
à chaque nouveau élève rajouter il trie sur le n° de classe. ensuit e
il doit mettre en couleur par MEFC une seule fois le n° de classe afin
de lancer la macro qui va créer les onglets par classe..
je ne suis pas sur d'avoir été très clair mais là ce matin je ne vo is
pas comment faire mieux (bringue hier soir)
en tout cas un grand merci pour ton aide
@ bientôt
Marc
Avatar
Francois L
Marc T a écrit :

Re,

Sans tenir compte de la MEFC, la macro classes devient

Sub Classes()
Set Rng = Sheets("BD").Range("H2", "H" & Range("H65535").End(xlUp).Row)
For Each c In Rng
d = c.Offset(-1, 0)
If [c] <> [d] Then
Sheets("BD").Activate
c.Activate
Run ("extrait")
Else
End If
Next
End Sub

et l'on supprime la macro "extrait" les lignes suivantes :

'If ActiveCell.Column >= 1 And ActiveCell.Column <= 8 _
' And ActiveCell.Row > 1 And ActiveCell <> "" Then

et bien sur le

' End If

sous réserve que la feuille BD soit triée comme attendu, il me semble
que ça fait ce que tu veux.

--
François L
qui a un bringué avec Minervois hors classe...


On 5 juil, 10:22, Francois L
wrote:
Marc T a écrit :

Bonjour,

Sub Classes()
Sheets("BD").Activate
Application.Volatile

Set Rng = Range("H2", "H" & Range("H65535").End(xlUp).Row)
For Each c In Rng
adr = c.Address
a = Application.CountIf(Rng, c.Value)
b = Application.CountIf(Range("H2", adr), c.Value)
If a > 1 And b = 1 Then

c.Activate
Run ("extrait")
End If

Next
'
End Sub

Maintenant reste à savoir si les conditions de la macro répondent bien à
ce qui est attendu... mais ça c'est une autre question.

--
François L



Rebonjour,
effectivement ça ne réponds pas !!!
je vais essayer de préciser:
à chaque nouveau élève rajouter il trie sur le n° de classe. ensuite
il doit mettre en couleur par MEFC une seule fois le n° de classe afin
de lancer la macro qui va créer les onglets par classe..
je ne suis pas sur d'avoir été très clair mais là ce matin je ne vois
pas comment faire mieux (bringue hier soir)
en tout cas un grand merci pour ton aide
@ bientôt
Marc



Avatar
Marc T
Super !!!
merci beaucoup ça marche
bon week-end
@ bientôt
Marc
1 2 3