A voir également:
- Pb macro excel
- Telecharger macro convertir chiffre en lettre excel - Télécharger - Tableur
- Liste déroulante excel - Guide
- Si et excel - Guide
- Word et excel gratuit - Guide
- Déplacer une colonne excel - Guide
32 réponses
Utilisateur anonyme
11 mai 2010 à 12:29
11 mai 2010 à 12:29
Sub Macro1()
Dim i As Integer
Dim cel As Range
Dim x
Application.ScreenUpdating = False
Sheets(3).Select
x = Sheets(1).Range("D4")
[A2:A10000].EntireRow.Hidden = True
For i = 10000 To 2 Step -1
If Range("A" & i) = x Then
Range("A" & i).EntireRow.Hidden = False
End If
Next i
Application.ScreenUpdating = True
End Sub
Dim i As Integer
Dim cel As Range
Dim x
Application.ScreenUpdating = False
Sheets(3).Select
x = Sheets(1).Range("D4")
[A2:A10000].EntireRow.Hidden = True
For i = 10000 To 2 Step -1
If Range("A" & i) = x Then
Range("A" & i).EntireRow.Hidden = False
End If
Next i
Application.ScreenUpdating = True
End Sub
Utilisateur anonyme
11 mai 2010 à 12:30
11 mai 2010 à 12:30
Sub Macro2()
Range("A2:D15").Select
Selection.Copy
Sheets(4).Select
Range("A2").Select
ActiveSheet.Paste
End Sub
Range("A2:D15").Select
Selection.Copy
Sheets(4).Select
Range("A2").Select
ActiveSheet.Paste
End Sub
Utilisateur anonyme
11 mai 2010 à 12:31
11 mai 2010 à 12:31
Sub Macro3()
Dim i As Integer
Dim cel As Range
Dim x
Dim y
Application.ScreenUpdating = False
Sheets(3).Select
x = Sheets(1).Range("D4")
y = Sheets(1).Range("K1").Value
[A2:A10000].EntireRow.Hidden = True
For i = 10000 To 2 Step -1
If Range("A" & i) = x Then
Range("Ai:Di").Select
Selection.Copy
Sheets(y).Select
Range("A2").Select
ActiveSheet.Paste
End If
Next i
Application.ScreenUpdating = True
End Sub
Dim i As Integer
Dim cel As Range
Dim x
Dim y
Application.ScreenUpdating = False
Sheets(3).Select
x = Sheets(1).Range("D4")
y = Sheets(1).Range("K1").Value
[A2:A10000].EntireRow.Hidden = True
For i = 10000 To 2 Step -1
If Range("A" & i) = x Then
Range("Ai:Di").Select
Selection.Copy
Sheets(y).Select
Range("A2").Select
ActiveSheet.Paste
End If
Next i
Application.ScreenUpdating = True
End Sub
pijaku
Messages postés
12263
Date d'inscription
jeudi 15 mai 2008
Statut
Modérateur
Dernière intervention
4 janvier 2024
2 754
11 mai 2010 à 12:49
11 mai 2010 à 12:49
Salut,
C'est un devoir de classe ou vous avez 2 pseudos?????
C'est un devoir de classe ou vous avez 2 pseudos?????
Bonjour pijaku,
J'ai renvoyée deux fois le même post car je ne sais pas pourquoi mais il ne s'affichait pas ce matin .
Pour ce qui est de ma réponse à Mike ben en fait Elsie et Laure c'est moi confère mon pseudo elsielaure.
Le doublon a été supprimé.
Merci pour ton aide
bon je vais lire ta réponse
Elsie
J'ai renvoyée deux fois le même post car je ne sais pas pourquoi mais il ne s'affichait pas ce matin .
Pour ce qui est de ma réponse à Mike ben en fait Elsie et Laure c'est moi confère mon pseudo elsielaure.
Le doublon a été supprimé.
Merci pour ton aide
bon je vais lire ta réponse
Elsie
Bonjour,
J'ai essayé d'appliquer ta macro , ça me met cette ligne en jaune :
.Range("Ai:Di").copy Sheets(y).Range("A65536").End(xlUp).Offset(1, 0)
en fait je ne veux rien masquer du tout dans le tableau de la Feuil3.
je voudrai à partir du tableau de la Feuil3 obtenir d'autres tableaux qui reprennent en fait quelques lignes de celui de la Feuil3 en fonction des valeurs D4 et K1 de la Feuil1...
Merci d'avance
Elsie
J'ai essayé d'appliquer ta macro , ça me met cette ligne en jaune :
.Range("Ai:Di").copy Sheets(y).Range("A65536").End(xlUp).Offset(1, 0)
en fait je ne veux rien masquer du tout dans le tableau de la Feuil3.
je voudrai à partir du tableau de la Feuil3 obtenir d'autres tableaux qui reprennent en fait quelques lignes de celui de la Feuil3 en fonction des valeurs D4 et K1 de la Feuil1...
Merci d'avance
Elsie
pijaku
Messages postés
12263
Date d'inscription
jeudi 15 mai 2008
Statut
Modérateur
Dernière intervention
4 janvier 2024
2 754
Modifié par pijaku le 11/05/2010 à 15:33
Modifié par pijaku le 11/05/2010 à 15:33
Alors on récapitule :
En feuille 1 :
- D4 = valeur permettant de ne sélectionner que les lignes intéressantes. Cette valeur se retrouvera Feuille 3 colonne A
- K1 : y est inscrit le nom de la feuille de destination, là ou on va coller les données sélectionnées
En feuille 3 colonne A : la liste ou on doit chercher la valeur contenue en Feuille1 D4
Le code :
En feuille 1 :
- D4 = valeur permettant de ne sélectionner que les lignes intéressantes. Cette valeur se retrouvera Feuille 3 colonne A
- K1 : y est inscrit le nom de la feuille de destination, là ou on va coller les données sélectionnées
En feuille 3 colonne A : la liste ou on doit chercher la valeur contenue en Feuille1 D4
Le code :
Sub copie_lignes_selon_selection() Dim i, derlig As Integer Dim nomfeuil As String Dim val With Sheets("Feuil1") val = .Range("D4").Value nomfeuil = .Range("K1").Value End With With Sheets("Feuil3") derlig = .Range("A65536").End(xlUp).Row For i = 2 To derlig If .Cells(i, 1).Value = val Then .Range(.Cells(i, 1), .Cells(i, 4)).Copy Sheets(nomfeuil).Range("A65536").End(xlUp).Offset(1, 0) End If Next i End With End Sub
Re,
Je ne sais pas pourquoi mais ça me met : With Sheets("Feuil1") en jaune alors j'ai remplacé par With Sheets(1) puis With Sheets("Feuil3") en jaune, j'ai remplacé par With Sheets(3)
et enfin ça en jaune : .Range(.Cells(i, 1), .Cells(i, 4)).Copy Sheets(nomfeuil).Range("A65536").End(xlUp).Offset(1, 0)
là je ne sais pas quoi remplacer...
en fait dans la cellule K1 on a le numéro de la feuille où doivent être collée les valeurs
Je ne sais pas pourquoi mais ça me met : With Sheets("Feuil1") en jaune alors j'ai remplacé par With Sheets(1) puis With Sheets("Feuil3") en jaune, j'ai remplacé par With Sheets(3)
et enfin ça en jaune : .Range(.Cells(i, 1), .Cells(i, 4)).Copy Sheets(nomfeuil).Range("A65536").End(xlUp).Offset(1, 0)
là je ne sais pas quoi remplacer...
en fait dans la cellule K1 on a le numéro de la feuille où doivent être collée les valeurs
pijaku
Messages postés
12263
Date d'inscription
jeudi 15 mai 2008
Statut
Modérateur
Dernière intervention
4 janvier 2024
2 754
11 mai 2010 à 16:18
11 mai 2010 à 16:18
dans la déclaration des variables (je ne sais pas si cela va changer quelque chose) change :
Dim nomfeuil As String par Dim nomfeuil As Integer
Si cela ne fonctionne pas, fais une copie de ton classeur, sans données confidentielles, poste la sur cjoint.com et viens copier ici le lien que tu auras créé.
Dim nomfeuil As String par Dim nomfeuil As Integer
Si cela ne fonctionne pas, fais une copie de ton classeur, sans données confidentielles, poste la sur cjoint.com et viens copier ici le lien que tu auras créé.
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
Mike-31
Messages postés
18379
Date d'inscription
dimanche 17 février 2008
Statut
Contributeur
Dernière intervention
13 mars 2025
5 125
11 mai 2010 à 17:56
11 mai 2010 à 17:56
Salut,
A quoi joues tu exactement, tu ouvres des discussions multiples avec des pseudos différents sur le même sujet que nous devons fermer,
tu demandes que l'on te modifie un code que je t'ai écrit sur une autre discussion pour une action spécifique et rien à voir avec ta demande.
De quoi s'agit-il exactement, pour voir si je m'intéresse
A quoi joues tu exactement, tu ouvres des discussions multiples avec des pseudos différents sur le même sujet que nous devons fermer,
tu demandes que l'on te modifie un code que je t'ai écrit sur une autre discussion pour une action spécifique et rien à voir avec ta demande.
De quoi s'agit-il exactement, pour voir si je m'intéresse
Bonsoir,
Je me suis expliquée et excusée pour le doublon de ma question. Mon 1er post n'apparaissait pas, j'en ai envoyé un 2nd ... au final il y en a eu deux.
Je pensais pouvoir adapter les macros que tu avais écris pour moi la dernière fois à cette nouvelle problématique. Le tableau que j'avais conçu en y mettant les macros a été refusé...donc j'ai proposé autre chose...mais faut croire que je ne m'y connais même pas assez pour les modifier correctement....
Elsie
Je me suis expliquée et excusée pour le doublon de ma question. Mon 1er post n'apparaissait pas, j'en ai envoyé un 2nd ... au final il y en a eu deux.
Je pensais pouvoir adapter les macros que tu avais écris pour moi la dernière fois à cette nouvelle problématique. Le tableau que j'avais conçu en y mettant les macros a été refusé...donc j'ai proposé autre chose...mais faut croire que je ne m'y connais même pas assez pour les modifier correctement....
Elsie
pijaku
Messages postés
12263
Date d'inscription
jeudi 15 mai 2008
Statut
Modérateur
Dernière intervention
4 janvier 2024
2 754
11 mai 2010 à 20:51
11 mai 2010 à 20:51
re-
Mike n'hésite pas à continuer ce sujet si tu veux. Tu l'as commencé donc... c'est toi qui voit.
Bonne soirée
Mike n'hésite pas à continuer ce sujet si tu veux. Tu l'as commencé donc... c'est toi qui voit.
Bonne soirée
Mike-31
Messages postés
18379
Date d'inscription
dimanche 17 février 2008
Statut
Contributeur
Dernière intervention
13 mars 2025
5 125
11 mai 2010 à 22:21
11 mai 2010 à 22:21
Salut Pijaku,
Ces temps ci, j'ai peu de temps à moi et limite mes interventions sur des sujets rapidement traités.
Ce qui m'a poussé à intervenir est la reconnaissance de mon code que j'avais dû revoir à plusieurs reprises pour causes de données évolutives.
Je ne sais pas exactement ce que veut faire Elsielaure comme pour la première demande d'ailleurs.
Il faudrait qu'elle expose clairement ce qu'elle cherche à faire avec un fichier exemple annoté ici j'ai ça et voudrai obtenir ce résultat etc ...cela nous fera gagner beaucoup de temps en écrivant un code spécifique aux nouvelles exigences.
Cordialement
Mike-31
Ces temps ci, j'ai peu de temps à moi et limite mes interventions sur des sujets rapidement traités.
Ce qui m'a poussé à intervenir est la reconnaissance de mon code que j'avais dû revoir à plusieurs reprises pour causes de données évolutives.
Je ne sais pas exactement ce que veut faire Elsielaure comme pour la première demande d'ailleurs.
Il faudrait qu'elle expose clairement ce qu'elle cherche à faire avec un fichier exemple annoté ici j'ai ça et voudrai obtenir ce résultat etc ...cela nous fera gagner beaucoup de temps en écrivant un code spécifique aux nouvelles exigences.
Cordialement
Mike-31
pijaku
Messages postés
12263
Date d'inscription
jeudi 15 mai 2008
Statut
Modérateur
Dernière intervention
4 janvier 2024
2 754
Modifié par pijaku le 12/05/2010 à 07:50
Modifié par pijaku le 12/05/2010 à 07:50
salut Mike,
Si cela ne te dérange pas, et si j'ai un peu de temps aujourd'hui je vais regarder ce classeur que Laure nous a joint.
Bonne journée
Si cela ne te dérange pas, et si j'ai un peu de temps aujourd'hui je vais regarder ce classeur que Laure nous a joint.
Bonne journée
Mike-31
Messages postés
18379
Date d'inscription
dimanche 17 février 2008
Statut
Contributeur
Dernière intervention
13 mars 2025
5 125
12 mai 2010 à 10:49
12 mai 2010 à 10:49
Salut Pijaku,
Pas de problème, d'après le fichier joint qui se présente un peu comme celui que j'ai traité précédemment, en D4 la valeur correspond à un service, mais après que doit faire le code et sur quelle feuille !
ou fauit il ajouter une cellule pour sélectionner le feuille !
A+
Mike-31
Pas de problème, d'après le fichier joint qui se présente un peu comme celui que j'ai traité précédemment, en D4 la valeur correspond à un service, mais après que doit faire le code et sur quelle feuille !
ou fauit il ajouter une cellule pour sélectionner le feuille !
A+
Mike-31
Mike-31
Messages postés
18379
Date d'inscription
dimanche 17 février 2008
Statut
Contributeur
Dernière intervention
13 mars 2025
5 125
Modifié par Mike-31 le 12/05/2010 à 23:46
Modifié par Mike-31 le 12/05/2010 à 23:46
Re,
Si tu répondais aux post ce serait plus facile.
Bien que tu ai posé la question à mon ami Pijaku, ces deux lignes permettent justement d'accélérer le code et suppriment les déplacements sur la feuille et le scintillement de la feuille dû aux déplacements
Application.ScreenUpdating = True
Application.ScreenUpdating = False
Pour ton code si tu expliquais clairement ce que tu veux faire, à partir de la cellule D4 je comprends que tu sélectionnes un service que l'on retrouve sur la feuille Tous et d'après le code tu copies les valeurs dans les feuilles 1010 pour le service 10, 1020 pour le service 20 etc ...
Si c'est ce que tu cherches, ton code ressemble plus à une usine à gaz et peut être simplifié.
Si tu dois ventiler tous les services dans les feuilles correspondantes le code peut être plus simple.
Si c'est que tu cherches, reste à savoir si tu souhaites copier ou couper le code dans les feuilles correspondantes
Si tu optes pour le copier des données il va falloir mettre un détrompeur pour ne pas copier deux fois les valeurs
Un exemple écrit pour une autre discussion avec copie de données dans deux feuilles que tu peux tester ainsi que ces deux lignes
Application.ScreenUpdating = True
Application.ScreenUpdating = False
Neutralisées par une apostrophe à tester puis effacer l'apostrophe devant les lignes et réessayer tu comprendras
https://www.cjoint.com/?fmxMYnfiUZ
A+
Mike-31
Une période d'échec est un moment rêvé pour semer les graines du savoir.
Si tu répondais aux post ce serait plus facile.
Bien que tu ai posé la question à mon ami Pijaku, ces deux lignes permettent justement d'accélérer le code et suppriment les déplacements sur la feuille et le scintillement de la feuille dû aux déplacements
Application.ScreenUpdating = True
Application.ScreenUpdating = False
Pour ton code si tu expliquais clairement ce que tu veux faire, à partir de la cellule D4 je comprends que tu sélectionnes un service que l'on retrouve sur la feuille Tous et d'après le code tu copies les valeurs dans les feuilles 1010 pour le service 10, 1020 pour le service 20 etc ...
Si c'est ce que tu cherches, ton code ressemble plus à une usine à gaz et peut être simplifié.
Si tu dois ventiler tous les services dans les feuilles correspondantes le code peut être plus simple.
Si c'est que tu cherches, reste à savoir si tu souhaites copier ou couper le code dans les feuilles correspondantes
Si tu optes pour le copier des données il va falloir mettre un détrompeur pour ne pas copier deux fois les valeurs
Un exemple écrit pour une autre discussion avec copie de données dans deux feuilles que tu peux tester ainsi que ces deux lignes
Application.ScreenUpdating = True
Application.ScreenUpdating = False
Neutralisées par une apostrophe à tester puis effacer l'apostrophe devant les lignes et réessayer tu comprendras
https://www.cjoint.com/?fmxMYnfiUZ
A+
Mike-31
Une période d'échec est un moment rêvé pour semer les graines du savoir.
Utilisateur anonyme
Modifié par elsielaure le 13/05/2010 à 00:20
Modifié par elsielaure le 13/05/2010 à 00:20
Bonsoir Mike,
Merci pour ton aide !
Trop bien : Application.ScreenUpdating = True et Application.ScreenUpdating = False; justement je ne comprenais pas pourquoi mon écran réagissait ainsi....
Ce que je voudrai en fait c'est sélectionner de manière aléatoire parmi les lignes d'un même service du tableau de tous quelques unes les copier puis les coller dans la feuille du service correspondant.
Je voudrai arriver au résultat que j'obtiens en exécutant les 3 macros du fichier de mon précédent post. Je ne sais pas si c'est possible en une macro. Là j'en ai une pour copier coller, une autre qui sélectionne en coloriant certaines lignes et une autre qui affiche que les lignes coloriées.
Associer ce code à un bouton de la feuille 1 où à la cellule D4 de la feuille1.
Je voudrai par la suite envoyer chaque tableau au service concerné automatiquement avec un UserForm comme m'avait montré Zebulon2503 dans l'autre post.
Elsie
Merci pour ton aide !
Trop bien : Application.ScreenUpdating = True et Application.ScreenUpdating = False; justement je ne comprenais pas pourquoi mon écran réagissait ainsi....
Ce que je voudrai en fait c'est sélectionner de manière aléatoire parmi les lignes d'un même service du tableau de tous quelques unes les copier puis les coller dans la feuille du service correspondant.
Je voudrai arriver au résultat que j'obtiens en exécutant les 3 macros du fichier de mon précédent post. Je ne sais pas si c'est possible en une macro. Là j'en ai une pour copier coller, une autre qui sélectionne en coloriant certaines lignes et une autre qui affiche que les lignes coloriées.
Associer ce code à un bouton de la feuille 1 où à la cellule D4 de la feuille1.
Je voudrai par la suite envoyer chaque tableau au service concerné automatiquement avec un UserForm comme m'avait montré Zebulon2503 dans l'autre post.
Elsie
Mike-31
Messages postés
18379
Date d'inscription
dimanche 17 février 2008
Statut
Contributeur
Dernière intervention
13 mars 2025
5 125
13 mai 2010 à 11:36
13 mai 2010 à 11:36
Re,
Application.ScreenUpdating n'est pas utilisable ou utile dans tous les codes, mais si on utilise avec false au début, il ne faut pas oublier de le remettre en True à la fin du code.
Pour en revenir à tes codes, quelque peu biscornus
Avec la macro 1 et 2, tu veux copier les valeurs correspondantes au service sélectionnées en D4 dans la feuille correspondante exemple 10 copier feuille1010
Jusque là le code est très simple
Ensuite la macro3 que doit-elle faire !
Pour terminer les formule en K1 et L1 servent à quoi, juste pour sélectionner la feuille de destination dans la macro3 !
si je vois bien, le code est très simple
Application.ScreenUpdating n'est pas utilisable ou utile dans tous les codes, mais si on utilise avec false au début, il ne faut pas oublier de le remettre en True à la fin du code.
Pour en revenir à tes codes, quelque peu biscornus
Avec la macro 1 et 2, tu veux copier les valeurs correspondantes au service sélectionnées en D4 dans la feuille correspondante exemple 10 copier feuille1010
Jusque là le code est très simple
Ensuite la macro3 que doit-elle faire !
Pour terminer les formule en K1 et L1 servent à quoi, juste pour sélectionner la feuille de destination dans la macro3 !
si je vois bien, le code est très simple
Utilisateur anonyme
Modifié par elsielaure le 13/05/2010 à 12:42
Modifié par elsielaure le 13/05/2010 à 12:42
Bonjour,
Non c'est que la macro 1 qui fait le copier coller ; la 2 permet de colorier certaines des lignes copiées collées selon une formule inscrite sur la Feuil1 en C11 ; la macro 3 elle, permet de n'afficher que les lignes coloriées.
D'ailleurs là ça me fait penser au lieu de masquer les lignes non coloriées, il faudrait plutôt que je les supprime.
C'est possible d'affecter ces 3 macros à un seul bouton ou une seule cellule ?
La formule en K1 permet de selectionner la feuille de destination et est aussi liée à la formule en B3 pour le titre. Celle en L1 .. heuu je vais voir.
Elsie
Non c'est que la macro 1 qui fait le copier coller ; la 2 permet de colorier certaines des lignes copiées collées selon une formule inscrite sur la Feuil1 en C11 ; la macro 3 elle, permet de n'afficher que les lignes coloriées.
D'ailleurs là ça me fait penser au lieu de masquer les lignes non coloriées, il faudrait plutôt que je les supprime.
C'est possible d'affecter ces 3 macros à un seul bouton ou une seule cellule ?
La formule en K1 permet de selectionner la feuille de destination et est aussi liée à la formule en B3 pour le titre. Celle en L1 .. heuu je vais voir.
Elsie
Mike-31
Messages postés
18379
Date d'inscription
dimanche 17 février 2008
Statut
Contributeur
Dernière intervention
13 mars 2025
5 125
Modifié par Mike-31 le 13/05/2010 à 14:02
Modifié par Mike-31 le 13/05/2010 à 14:02
Re,
Alors les trois macros que tu as mis en haut de la discussion ne correspondent pas à tes besoins, (macro1 masque des lignes, la 2 copie et la 3 fait référence à D4 et K1)
En C11 la formule =ALEA()*(C10-1)+1 pourquoi C10-1)+1 si en C10 tu as 8 ce qui fait 8-1+1 c'est toujours = à 8 soit tu écris =ALEA()*(C10)+1
ou même simplement
=ALEA()*C10 ou =C10*ALEA()
le mieux est de tout est que tu reexpliques ton problème
A partir de la ligne D4 tu souhaites copier les valeurs correspondantes au service sur la feuille du service jusque la pas de problème
Ensuite quelles lignes, sur quelle feuille et comment veux tu les coloriser, exemple si en C11 la valeur est 4
A+
Mike-31
Une période d'échec est un moment rêvé pour semer les graines du savoir.
Alors les trois macros que tu as mis en haut de la discussion ne correspondent pas à tes besoins, (macro1 masque des lignes, la 2 copie et la 3 fait référence à D4 et K1)
En C11 la formule =ALEA()*(C10-1)+1 pourquoi C10-1)+1 si en C10 tu as 8 ce qui fait 8-1+1 c'est toujours = à 8 soit tu écris =ALEA()*(C10)+1
ou même simplement
=ALEA()*C10 ou =C10*ALEA()
le mieux est de tout est que tu reexpliques ton problème
A partir de la ligne D4 tu souhaites copier les valeurs correspondantes au service sur la feuille du service jusque la pas de problème
Ensuite quelles lignes, sur quelle feuille et comment veux tu les coloriser, exemple si en C11 la valeur est 4
A+
Mike-31
Une période d'échec est un moment rêvé pour semer les graines du savoir.
Utilisateur anonyme
13 mai 2010 à 14:49
13 mai 2010 à 14:49
Re,
« A partir de la ligne D4 tu souhaites copier les valeurs correspondantes au service sur la feuille du service jusque la pas de problème » c'est la macro compléter_feuilles qui fait cela.
Oui ensuite je veux sélectionner de manière aléatoire quelques unes de ces lignes grâce à la formule en C11 de la feuille 1. Pour cela j'ai utilisé la macro colorisation ; afin de pouvoir différencier les lignes sélectionnées des autres.
Et comme ce sont les seules lignes qui m'intéressent j'ai utilisé la macro1 afin de masquer les lignes non coloriées. Mais je voudrai plutôt les supprimer, car elles ne serviront pas.
https://www.cjoint.com/?fmxMYnfiUZ
en exécutant les 3 macros là, on obtient le résultat que je veux au final.
Suis-je claire là ?
Elsie
« A partir de la ligne D4 tu souhaites copier les valeurs correspondantes au service sur la feuille du service jusque la pas de problème » c'est la macro compléter_feuilles qui fait cela.
Oui ensuite je veux sélectionner de manière aléatoire quelques unes de ces lignes grâce à la formule en C11 de la feuille 1. Pour cela j'ai utilisé la macro colorisation ; afin de pouvoir différencier les lignes sélectionnées des autres.
Et comme ce sont les seules lignes qui m'intéressent j'ai utilisé la macro1 afin de masquer les lignes non coloriées. Mais je voudrai plutôt les supprimer, car elles ne serviront pas.
https://www.cjoint.com/?fmxMYnfiUZ
en exécutant les 3 macros là, on obtient le résultat que je veux au final.
Suis-je claire là ?
Elsie
Mike-31
Messages postés
18379
Date d'inscription
dimanche 17 février 2008
Statut
Contributeur
Dernière intervention
13 mars 2025
5 125
17 mai 2010 à 14:19
17 mai 2010 à 14:19
Salut,
Après ce long week-end end juste quelques modifs à tes macros
Dans la Thisworkbook allongé la prise de l'effacement qui s'arrêtait à la feuille 1060
Dans le cas de procédures en chaine, il vaut mieux conserver des codes bien séparé et soit créer une macro qui regroupe dans l'ordre le nom des macros qui doivent s'exécuter ou à la fin de la procédure comme je l'ai fait dans
Sub completer_feuilles()
Il est plus facile de retrouver des erreurs ou modifier un code.
Sur la feuille Test, j'ai supprimé les données inutiles en K1, L1 etc
En B3 je suis passé par une concatenation ce qui revient au même, ainsi que dans le code. Les données en J et K peuvent être masquée.
En haut de chaque feuille j'ai créé des formules pour faire patienter lors du déroulement des macros, le temps est plus ou moins long en fonction du nombre de ligne à traiter
En E1 le nombre de ligne
En F1 une barre de défilement de 0 à 100%
Ou en H de 100% à 0
En F et H1 des barres de défilement
https://www.cjoint.com/?frosWUhNBz
Après ce long week-end end juste quelques modifs à tes macros
Dans la Thisworkbook allongé la prise de l'effacement qui s'arrêtait à la feuille 1060
Dans le cas de procédures en chaine, il vaut mieux conserver des codes bien séparé et soit créer une macro qui regroupe dans l'ordre le nom des macros qui doivent s'exécuter ou à la fin de la procédure comme je l'ai fait dans
Sub completer_feuilles()
Il est plus facile de retrouver des erreurs ou modifier un code.
Sur la feuille Test, j'ai supprimé les données inutiles en K1, L1 etc
En B3 je suis passé par une concatenation ce qui revient au même, ainsi que dans le code. Les données en J et K peuvent être masquée.
En haut de chaque feuille j'ai créé des formules pour faire patienter lors du déroulement des macros, le temps est plus ou moins long en fonction du nombre de ligne à traiter
En E1 le nombre de ligne
En F1 une barre de défilement de 0 à 100%
Ou en H de 100% à 0
En F et H1 des barres de défilement
https://www.cjoint.com/?frosWUhNBz
Utilisateur anonyme
17 mai 2010 à 17:01
17 mai 2010 à 17:01
Re,
Super les bandes pour attendre !
Encore une chose...
La macro de la Feuil1 s'exécute lorsqu'une valeur change sur la feuille « Test », que dois-je modifier pour que ce soit uniquement la modification de la cellule D4 qui exécute la macro.
Sur propriété de la feuille 1 j'ai la macro ci-dessous qui regroupe toute les autres :
Private Sub Worksheet_Change(ByVal Target As Range)
Call completer_feuilles
Call colorisation
Call Supprimer_ligne_inutile
Call SendMail
End Sub
Merci d'avance
Elsie
Super les bandes pour attendre !
Encore une chose...
La macro de la Feuil1 s'exécute lorsqu'une valeur change sur la feuille « Test », que dois-je modifier pour que ce soit uniquement la modification de la cellule D4 qui exécute la macro.
Sur propriété de la feuille 1 j'ai la macro ci-dessous qui regroupe toute les autres :
Private Sub Worksheet_Change(ByVal Target As Range)
Call completer_feuilles
Call colorisation
Call Supprimer_ligne_inutile
Call SendMail
End Sub
Merci d'avance
Elsie
Mike-31
Messages postés
18379
Date d'inscription
dimanche 17 février 2008
Statut
Contributeur
Dernière intervention
13 mars 2025
5 125
17 mai 2010 à 18:10
17 mai 2010 à 18:10
Re,
Si tu travailles sur mon fichier, j'ai intégré les codes à la fin de la première macro.
dans la propriétés de la feuille Test (SendMail qui est censé faire quoi)
Private Sub Worksheet_Change(ByVal Target As Range)
Call completer_feuilles
Call SendMail
End Sub
Pour les barres de défilement, il n'est peut être pas nécessaire de conserver la barre progressive et dégressive ainsi que les % de progressions et dégressifs. Suivant le cas il faudra peut être compléter avec une conditionnelle
Ces barres ne fonctionnent que si la fonction Application.ScreenUpdating n'est pas utilisée en début et evidemment en fin de procédure
Si tu travailles sur mon fichier, j'ai intégré les codes à la fin de la première macro.
dans la propriétés de la feuille Test (SendMail qui est censé faire quoi)
Private Sub Worksheet_Change(ByVal Target As Range)
Call completer_feuilles
Call SendMail
End Sub
Pour les barres de défilement, il n'est peut être pas nécessaire de conserver la barre progressive et dégressive ainsi que les % de progressions et dégressifs. Suivant le cas il faudra peut être compléter avec une conditionnelle
Ces barres ne fonctionnent que si la fonction Application.ScreenUpdating n'est pas utilisée en début et evidemment en fin de procédure
Utilisateur anonyme
Modifié par elsielaure le 18/05/2010 à 10:02
Modifié par elsielaure le 18/05/2010 à 10:02
Bonjour,
la macro sendmail afin d'envoyer la feuille choisie est la suivante
Function SendMail()
Dim y As String
Dim x As Integer
y = Sheets(1).Range("M1").Value
x = Sheets(1).Range("K1").Value
' Copy the sheet(1)
ThisWorkbook.Sheets(x).Copy
' Send Email
With ActiveWorkbook
.SendMail Recipients:=y, Subject:="test" & Format(Date, "dd/mmm/yy")
.Close SaveChanges:=False
End With
End Function
j'ai donc ceci sur les propriétés de la feuille 1:
Private Sub Worksheet_Change(ByVal Target As Range)
Call completer_feuilles
Call colorisation
Call Supprimer_ligne_inutile
Call SendMail
End Sub
je voudrai que cette macro se déclenche uniquement quand la cellule D4 est modifiée.
Merci d'avance.
Elsie
la macro sendmail afin d'envoyer la feuille choisie est la suivante
Function SendMail()
Dim y As String
Dim x As Integer
y = Sheets(1).Range("M1").Value
x = Sheets(1).Range("K1").Value
' Copy the sheet(1)
ThisWorkbook.Sheets(x).Copy
' Send Email
With ActiveWorkbook
.SendMail Recipients:=y, Subject:="test" & Format(Date, "dd/mmm/yy")
.Close SaveChanges:=False
End With
End Function
j'ai donc ceci sur les propriétés de la feuille 1:
Private Sub Worksheet_Change(ByVal Target As Range)
Call completer_feuilles
Call colorisation
Call Supprimer_ligne_inutile
Call SendMail
End Sub
je voudrai que cette macro se déclenche uniquement quand la cellule D4 est modifiée.
Merci d'avance.
Elsie
Mike-31
Messages postés
18379
Date d'inscription
dimanche 17 février 2008
Statut
Contributeur
Dernière intervention
13 mars 2025
5 125
Modifié par Mike-31 le 18/05/2010 à 13:55
Modifié par Mike-31 le 18/05/2010 à 13:55
Re,
Avec Function SendMail()
que veux tu envoyer le classeur ou simplement la feuille sélectionnée après le filtrage !
y = Sheets(1).Range("M1").Value
en M1 qu'as tu !
x = Sheets(1).Range("K1").Value
en K1 tu avais une valeur qui tu permettait d'utiliser la RECHERCHEV
sans me donner l'adresse, ou veux tu expédier, à une adresse fixe saisie dans le code ou dans une cellule ou encore à saisir avant l'envoi !
que veux tu expédier uniquement la feuille issue de la sélection (Ex. si en D4 tu sélectionnes 10, tu veux envoyer la feuille 1010) ou copier le contenu de cette feuille dans ton mail
Avec quelle messagerie veux tu expédier, Outlook, Outlook express, Incredimail, ...
A+
Mike-31
Une période d'échec est un moment rêvé pour semer les graines du savoir.
Avec Function SendMail()
que veux tu envoyer le classeur ou simplement la feuille sélectionnée après le filtrage !
y = Sheets(1).Range("M1").Value
en M1 qu'as tu !
x = Sheets(1).Range("K1").Value
en K1 tu avais une valeur qui tu permettait d'utiliser la RECHERCHEV
sans me donner l'adresse, ou veux tu expédier, à une adresse fixe saisie dans le code ou dans une cellule ou encore à saisir avant l'envoi !
que veux tu expédier uniquement la feuille issue de la sélection (Ex. si en D4 tu sélectionnes 10, tu veux envoyer la feuille 1010) ou copier le contenu de cette feuille dans ton mail
Avec quelle messagerie veux tu expédier, Outlook, Outlook express, Incredimail, ...
A+
Mike-31
Une période d'échec est un moment rêvé pour semer les graines du savoir.
pijaku
Messages postés
12263
Date d'inscription
jeudi 15 mai 2008
Statut
Modérateur
Dernière intervention
4 janvier 2024
2 754
18 mai 2010 à 14:33
18 mai 2010 à 14:33
Salut Mike,
Je reviens sur ce sujet.
En fait pour le mail, Elsie ne veux envoyer qu'une feuille (celle dont le n° apparait en K1) par Outlook.
On a déjà pas mal avancé sur ce sujet mais là je bloque....
Remarque : je ne sais pas si tu auras le courage de lire toute notre discussion...
Bonne journée à toi en tout cas.
Je reviens sur ce sujet.
En fait pour le mail, Elsie ne veux envoyer qu'une feuille (celle dont le n° apparait en K1) par Outlook.
On a déjà pas mal avancé sur ce sujet mais là je bloque....
Remarque : je ne sais pas si tu auras le courage de lire toute notre discussion...
Bonne journée à toi en tout cas.
Mike-31
Messages postés
18379
Date d'inscription
dimanche 17 février 2008
Statut
Contributeur
Dernière intervention
13 mars 2025
5 125
18 mai 2010 à 15:19
18 mai 2010 à 15:19
Salut Pijaku,
Ce genre de lecture n'est pas ma tasse de thé, c'est pour cela que je pose souvent des questions déjà posé et noyées dans le flot des posts.
Sais tu, pour la messagerie, Outlook ou Outlook Express
Cordialement
Ce genre de lecture n'est pas ma tasse de thé, c'est pour cela que je pose souvent des questions déjà posé et noyées dans le flot des posts.
Sais tu, pour la messagerie, Outlook ou Outlook Express
Cordialement
Utilisateur anonyme
Modifié par elsielaure le 18/05/2010 à 15:42
Modifié par elsielaure le 18/05/2010 à 15:42
Re Bonjour Mike, Pijaku,
Avec votre aide j'en suis là :
https://www.cjoint.com/?fspJdiUHq1
Le problème c'est ce que la macro "Envoyer_Fichier" ne me permet pas de mettre en forme mon message. Il me l'écrit tout à la suite.
J'obtien ceci : Bonjour,Vous trouverez ci-joint le tableau de Contrôle pour votre service.Merci de bien vouloir me faire un retour avec vos corrections.Cordialement, Elsie
Au lieu de ceci :
Bonjour,
Vous trouverez ci-joint le tableau de Contrôle pour votre service.
Merci de bien vouloir me faire un retour avec vos corrections.
Cordialement,
Elsie
Le message texte et le fichier sont envoyé via outlook.
Function Envoyer_Fichier()
Dim y, chemin, nom As String
Dim x As Integer
Dim ol As Object, myItem As Object
chemin = ActiveWorkbook.Path
y = Sheets(1).Range("M1").Value
x = Sheets(1).Range("K1").Value
nom = "Contrôle Aléatoire du Service " & Sheets(x).Name
ThisWorkbook.Sheets(x).Copy
ActiveWorkbook.SaveAs chemin & "\" & nom
Set ol = CreateObject("outlook.application")
Set myItem = ol.CreateItem(olMailItem)
myItem.To = y
myItem.Subject = "Contrôle Aléatoire des NBPORT"
myItem.Body = "Bonjour, " & "" & "Vous trouverez ci-joint le tableau de Contrôle Aléatoire des NBPORT pour votre service. " & "" _
& "Merci de bien vouloir me faire un retour avec vos corrections. " & "" & "Cordialement, " & "" & "Votre CSO. "
myItem.Attachments.Add ActiveWorkbook.FullName
myItem.Send
Set ol = Nothing
ActiveWorkbook.Close
End Function
Avec votre aide j'en suis là :
https://www.cjoint.com/?fspJdiUHq1
Le problème c'est ce que la macro "Envoyer_Fichier" ne me permet pas de mettre en forme mon message. Il me l'écrit tout à la suite.
J'obtien ceci : Bonjour,Vous trouverez ci-joint le tableau de Contrôle pour votre service.Merci de bien vouloir me faire un retour avec vos corrections.Cordialement, Elsie
Au lieu de ceci :
Bonjour,
Vous trouverez ci-joint le tableau de Contrôle pour votre service.
Merci de bien vouloir me faire un retour avec vos corrections.
Cordialement,
Elsie
Le message texte et le fichier sont envoyé via outlook.
Function Envoyer_Fichier()
Dim y, chemin, nom As String
Dim x As Integer
Dim ol As Object, myItem As Object
chemin = ActiveWorkbook.Path
y = Sheets(1).Range("M1").Value
x = Sheets(1).Range("K1").Value
nom = "Contrôle Aléatoire du Service " & Sheets(x).Name
ThisWorkbook.Sheets(x).Copy
ActiveWorkbook.SaveAs chemin & "\" & nom
Set ol = CreateObject("outlook.application")
Set myItem = ol.CreateItem(olMailItem)
myItem.To = y
myItem.Subject = "Contrôle Aléatoire des NBPORT"
myItem.Body = "Bonjour, " & "" & "Vous trouverez ci-joint le tableau de Contrôle Aléatoire des NBPORT pour votre service. " & "" _
& "Merci de bien vouloir me faire un retour avec vos corrections. " & "" & "Cordialement, " & "" & "Votre CSO. "
myItem.Attachments.Add ActiveWorkbook.FullName
myItem.Send
Set ol = Nothing
ActiveWorkbook.Close
End Function
pijaku
Messages postés
12263
Date d'inscription
jeudi 15 mai 2008
Statut
Modérateur
Dernière intervention
4 janvier 2024
2 754
18 mai 2010 à 16:15
18 mai 2010 à 16:15
as tu essayé ma dernière solution dans l'autre sujet???
@ Mike : je m'en doutais... C'est avec Outlook, il me semble.
@ Mike : je m'en doutais... C'est avec Outlook, il me semble.
Mike-31
Messages postés
18379
Date d'inscription
dimanche 17 février 2008
Statut
Contributeur
Dernière intervention
13 mars 2025
5 125
19 mai 2010 à 09:49
19 mai 2010 à 09:49
Salut,
la syntaxe de retour paragraphe est vbCrL
myItem.Body = "Bonjour" & vbCrLf & vbCrLf & vbCrLf & "Vous trouverez ci-joint le tableau de Contrôle Aléatoire des NBPORT pour votre service." & vbCrLf & "Merci de bien vouloir me faire un retour avec vos corrections." & vbCrLf & "Cordialement," & vbCrLf & vbCrLf & vbCrLf & "Elsie."
Dès que j'ai un moment, j'apporte une petite modif au code de notre ami Pijaku et t'envoi un exemple.
Si l'adresse mail pour l'envoi de tes mails est unique il est possible de l'intégrer dans le code et la supprimer de la cellule M1 ce qui évitera des lien inutiles.
D'autre part le code génére un fichier dans le même répertoire est il nécessaire ou souhaites tu archiver le ou les derniers envoi
la syntaxe de retour paragraphe est vbCrL
myItem.Body = "Bonjour" & vbCrLf & vbCrLf & vbCrLf & "Vous trouverez ci-joint le tableau de Contrôle Aléatoire des NBPORT pour votre service." & vbCrLf & "Merci de bien vouloir me faire un retour avec vos corrections." & vbCrLf & "Cordialement," & vbCrLf & vbCrLf & vbCrLf & "Elsie."
Dès que j'ai un moment, j'apporte une petite modif au code de notre ami Pijaku et t'envoi un exemple.
Si l'adresse mail pour l'envoi de tes mails est unique il est possible de l'intégrer dans le code et la supprimer de la cellule M1 ce qui évitera des lien inutiles.
D'autre part le code génére un fichier dans le même répertoire est il nécessaire ou souhaites tu archiver le ou les derniers envoi
Utilisateur anonyme
Modifié par elsielaure le 19/05/2010 à 10:28
Modifié par elsielaure le 19/05/2010 à 10:28
Bonjour Mike,
Oui pour le vbCrL Pijaku me l'avais proposé hier...j'avais du faire une erreur en utilisant...
Voici mon dernier fichier : https://www.cjoint.com/?ftkyrSlmhs
J'aimerai masquer les feuilles 4 à 11, mais là les macros ne fonctionnement plus correctement sauf completer_feuilles ?!?
Aussi ensuite j'aimerai bloquer certaines cellules, je ne sais pas si cela va bousiller les macros.
J'aimerai en fait que lors de l'exécution de la macro Traitement, le fichier reste ouvert sur la feuille 1. L'utilisateur verra le détail du fichier envoyé en cliquant sur un autre bouton qui affichera la feuille x (x variant de 4 à 11).
Non l'adresse du destinataire varie en fonction de la feuille, là j'ai 8 emails mais cela pourrait changer. Non je ne souhaite pas nécessairement archiver les derniers envois, vu que je les aurais déjà dans mon mail.
Ça serait vraiment très très très gentil de ta part de modifier les macros dans ce sens
Elsie
Oui pour le vbCrL Pijaku me l'avais proposé hier...j'avais du faire une erreur en utilisant...
Voici mon dernier fichier : https://www.cjoint.com/?ftkyrSlmhs
J'aimerai masquer les feuilles 4 à 11, mais là les macros ne fonctionnement plus correctement sauf completer_feuilles ?!?
Aussi ensuite j'aimerai bloquer certaines cellules, je ne sais pas si cela va bousiller les macros.
J'aimerai en fait que lors de l'exécution de la macro Traitement, le fichier reste ouvert sur la feuille 1. L'utilisateur verra le détail du fichier envoyé en cliquant sur un autre bouton qui affichera la feuille x (x variant de 4 à 11).
Non l'adresse du destinataire varie en fonction de la feuille, là j'ai 8 emails mais cela pourrait changer. Non je ne souhaite pas nécessairement archiver les derniers envois, vu que je les aurais déjà dans mon mail.
Ça serait vraiment très très très gentil de ta part de modifier les macros dans ce sens
Elsie