[Excel] 1 même macro sur plusieurs feuilles?
morigann
Messages postés
66
Statut
Membre
-
jjsteing Messages postés 1803 Statut Contributeur -
jjsteing Messages postés 1803 Statut Contributeur -
Bonjour,
Je travaille sur un glossaire et j'aimerais que toutes les données dans les cellules de la colonne A et de la colonne C commence par une majuscule (uniquement pour la 1ere lettre), je ne sais pas s'il existe une formule Excel (autre que NomPropre) pour ça, mais voici ma macro (1 pour la colonne A et l'autre pour la colonne C) :
Sub Transforme_f1fr()
Dim Valeur As String
Dim Plage, Cellule As Range
Set Plage = Range("A6:A3834")
For Each Cellule In Plage
Valeur = Mid(Cellule.Value, 2)
Valeur = UCase(Mid(Cellule.Value, 1, 1)) & Valeur
Cellule.Value = Valeur
Next Cellule
End Sub
Sub Transforme_f1gb()
Dim Valeur As String
Dim Plage, Cellule As Range
Set Plage = Range("C6:C3834")
For Each Cellule In Plage
Valeur = Mid(Cellule.Value, 2)
Valeur = UCase(Mid(Cellule.Value, 1, 1)) & Valeur
Cellule.Value = Valeur
Next Cellule
End Sub
J'ai rentré la macro dans le Module1, et j'aimerais qu'elle s'applique à la deuxième feuille également, car pour le moment elle s'applique seulement sur la 1ere feuille.
Si quelqu'un peut m'aider...
Je travaille sur un glossaire et j'aimerais que toutes les données dans les cellules de la colonne A et de la colonne C commence par une majuscule (uniquement pour la 1ere lettre), je ne sais pas s'il existe une formule Excel (autre que NomPropre) pour ça, mais voici ma macro (1 pour la colonne A et l'autre pour la colonne C) :
Sub Transforme_f1fr()
Dim Valeur As String
Dim Plage, Cellule As Range
Set Plage = Range("A6:A3834")
For Each Cellule In Plage
Valeur = Mid(Cellule.Value, 2)
Valeur = UCase(Mid(Cellule.Value, 1, 1)) & Valeur
Cellule.Value = Valeur
Next Cellule
End Sub
Sub Transforme_f1gb()
Dim Valeur As String
Dim Plage, Cellule As Range
Set Plage = Range("C6:C3834")
For Each Cellule In Plage
Valeur = Mid(Cellule.Value, 2)
Valeur = UCase(Mid(Cellule.Value, 1, 1)) & Valeur
Cellule.Value = Valeur
Next Cellule
End Sub
J'ai rentré la macro dans le Module1, et j'aimerais qu'elle s'applique à la deuxième feuille également, car pour le moment elle s'applique seulement sur la 1ere feuille.
Si quelqu'un peut m'aider...
A voir également:
- [Excel] 1 même macro sur plusieurs feuilles?
- Telecharger macro convertir chiffre en lettre excel - Télécharger - Tableur
- Liste déroulante excel - Guide
- Comment faire un livret avec des feuilles a4 - Guide
- Formule moyenne excel plusieurs colonnes - Guide
- Word et excel gratuit - Guide
4 réponses
Bonjour
Normal que ça ne marche qu'avec la feuille active, le Range("A1:Z85").Select s'applique à la fenêtre active puisqu'aucune feuille n'est précisée
Tu as deux méthodes :
Soit tu actives les feuilles tour à tour
Soit tu précises la feuille
La 1ère solution :
La deuxième solution:
Note que dans cette deuxième solution, tu économises le select pour travailler directement sur les plages qui t'intéressent.
Normal que ça ne marche qu'avec la feuille active, le Range("A1:Z85").Select s'applique à la fenêtre active puisqu'aucune feuille n'est précisée
Tu as deux méthodes :
Soit tu actives les feuilles tour à tour
Soit tu précises la feuille
La 1ère solution :
For Each w In Worksheets w.Activate ...
La deuxième solution:
For Each Cell In w.Range("A1:Z85")(sans le Range("A1:Z85").Select avant)
Note que dans cette deuxième solution, tu économises le select pour travailler directement sur les plages qui t'intéressent.
Bonjour,
qcq chose m'échappe...
Si tu l'as mise dans un module elle s'applique à la feuille active qcq soit la feuille... (???)
Et pour éviter de traiter des cellules vides pour rien réduit ta plage à la dernière cellule utilisée avec
Set Plage = [A6].Resize([A65536].End(xlUp).Row - 5, 1)
Pour éviter le clignotement de l'écran tu peux aussi ajouter au début :
application.screenupdating = false
tu le remets à true avant de quitter
eric
qcq chose m'échappe...
Si tu l'as mise dans un module elle s'applique à la feuille active qcq soit la feuille... (???)
Et pour éviter de traiter des cellules vides pour rien réduit ta plage à la dernière cellule utilisée avec
Set Plage = [A6].Resize([A65536].End(xlUp).Row - 5, 1)
Pour éviter le clignotement de l'écran tu peux aussi ajouter au début :
application.screenupdating = false
tu le remets à true avant de quitter
eric
Moi j'essaye aussi de faire une boucle pour chaque feuille mais ça ne marche que pour la feuille active...
Pourriez vous me dire ce qui cloche?
Sub essai()
Dim w As Worksheet
For Each w In Worksheets
'Selectionne la page
Range("A1:Z85").Select
For Each Cell In Selection
'Réinitialise toute la page en blanc
Cell.Interior.ColorIndex = 0
'Colorie en vert les cellules contenant CM ou SJD
If InStr(Cell.Value, "CM") > 0 Or InStr(Cell.Value, "SJD") > 0 Then
Cell.Interior.ColorIndex = 4
End If
'Colorie en jaune les cellule contenant ces critères 1
If Cell.Value = "CM02" Or Cell.Value = "CM07" Or Cell.Value = "CM35" Then
Cell.Interior.ColorIndex = 6
End If
'Colorie en jaune les cellule contenant ces critères 2
If Cell.Value = "SJD04" Or Cell.Value = "SJD07" Or Cell.Value = "SJD08" Then
Cell.Interior.ColorIndex = 6
End If
'Colorie en rouge les cellule contenant ces critères 3
If Cell.Value = "CM32" Or Cell.Value = "CM51"
Cell.Interior.ColorIndex = 3
End If
'Colorie en rouge les cellule contenant ces critères 4
If Cell.Value = "SJD11" Or Cell.Value = "SJD18" Then
Cell.Interior.ColorIndex = 3
End If
Next
Next w
End Sub
Merci d'avance pour les réponses
Pourriez vous me dire ce qui cloche?
Sub essai()
Dim w As Worksheet
For Each w In Worksheets
'Selectionne la page
Range("A1:Z85").Select
For Each Cell In Selection
'Réinitialise toute la page en blanc
Cell.Interior.ColorIndex = 0
'Colorie en vert les cellules contenant CM ou SJD
If InStr(Cell.Value, "CM") > 0 Or InStr(Cell.Value, "SJD") > 0 Then
Cell.Interior.ColorIndex = 4
End If
'Colorie en jaune les cellule contenant ces critères 1
If Cell.Value = "CM02" Or Cell.Value = "CM07" Or Cell.Value = "CM35" Then
Cell.Interior.ColorIndex = 6
End If
'Colorie en jaune les cellule contenant ces critères 2
If Cell.Value = "SJD04" Or Cell.Value = "SJD07" Or Cell.Value = "SJD08" Then
Cell.Interior.ColorIndex = 6
End If
'Colorie en rouge les cellule contenant ces critères 3
If Cell.Value = "CM32" Or Cell.Value = "CM51"
Cell.Interior.ColorIndex = 3
End If
'Colorie en rouge les cellule contenant ces critères 4
If Cell.Value = "SJD11" Or Cell.Value = "SJD18" Then
Cell.Interior.ColorIndex = 3
End If
Next
Next w
End Sub
Merci d'avance pour les réponses
Merci pour ton aide ;-)