Diverses petites astuces
Macro pour additionner des cellules de couleur rouge
Cette
macro additionne les chiffres dans les cellules de même
couleur, en l'occurence le rouge.
Une fenêtre affiche le résultat.
Sub inventaireRouge()
sommeRouge = 0
compterRouge = 0
For Each cell In ActiveSheet.UsedRange
If cell.Interior.Color = vbRed Then
If Not IsError(cell.Value) Then sommeRouge = sommeRouge + cell.Value
compterRouge = compterRouge + 1
End If
Next
If compterRouge = 1 Then c = "cellule" Else c = "cellules"
MsgBox compterRouge & " " & c & " -- Total = " & sommeRouge
End Sub
Dans tous les messages box, pour aller à la ligne mettre le signe "&"
Macro pour écrire les jours dans une colonne définie entre deux dates
Exemple, écrire dans A1 25/11/2001,
et dans A2, 30/11/2001.
La macro vous affichera dans la cellule B1,B2,B3,B4,B5, le 26/11/2001, 27/11/2001,
28/11/2001, 29/11/2001, 30/11/2001
Sub Macro2()
Range("b1").Select
New_date = Cells(1, 1).Value
Do While New_date <= Cells(2, 1).Value
ActiveCell.FormulaR1C1 = New_date
New_date = New_date + 1
ActiveCell.Offset(1, 0).Range("A1").Select
Loop
End Sub
Recopier une date dans un ordre différent
Exemple:
Dans A1 la date 11/12/01.
Dans B1 la formule: =CNUM(TEXTE(A1;"aaaa.mm.jj"))
se qui affiche: 2001.12.11 année.mois.jour
Changer la casse dans les cellules
Formule:dans A1 BONJOUR , dans B1
écrire la formule =MINUSCULE(A1)
S'il te faut remplacer toute une colonne, tu recopies par valeurs
(Edition/Collage spécial, cocher valeurs) les fonctions et tu supprimes la colonne
d'origine.
Ou des macros pour:
Pour les majuscules:
Sub Majus()
For Each cell In Selection
cell.Value = UCase(cell.Value)
Next cell
End Sub
les minuscules:
Sub Minus()
For Each cell In Selection
cell.Value = LCase(cell.Value)
Next cell
End Sub
Majuscule Au Début De Chaque Mot
Sub MajDebMot()
For Each cell In Selection
cell.Value = Application.WorksheetFunction.Proper(cell.Value)
Next cell
End Sub
Je propose deux solutions:
1-Une formule de feuille
Supposons que tu entres des données dans la colonne A,
alors la colonne B pourrait afficher ce que tu veux.
Par exemple, si A1 contient 815, alors B1
affichera 8h15 à l'aide d'une simple formule:
=ENT(A1/100)&"h"&MOD(A1;100)
2-Une petite macro:
Dans l'éditeur VBA' tu double-clique l'objet ThisWorkbook et tu insères le code
suivant:
Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range)
If IsNumeric(Target.Value) Then
Target.Value = Int(Target.Value / 100) & "h" & (Target.Value Mod 100)
End If
End Sub
Cette macro va remplacer à la volée toute les valeurs que tu saisis
Une macro pour inscrire une lettre dans les cellules sélectionnées
Comment faire une macro qui inscrive une même
lettre dans les cellules sélectionnées :
Sublettre()
Range("a1:b3").Value = "v"
ou alors si la plage est déjà sélectionnée
Sublettre()
Selection.Value = "v"
End Sub
Faire apparaître dans un calendrier les dimanches et jours fériés d'une autre couleur
Comment dans un tableau avec un calendrier de l'année, faire apparaître
automatiquement les dimanches et jours fériés d'une autre couleur.
Pour les dimanches c'est assez simple, tu sélectionnes tes jours, menu Format,
Mise en forme conditionnelle, la formule est :
=JOURSEM(1ere cellule date)=1 sans les $ et tu mets
le format que tu veux...
Pour les jours fériés c'est plus difficile.
Tu mets la liste des jours fériés dans une colonne (tu peux éventuellement les
récupérer dans le fichier Outlook.TXT du dossier C:\Program Files\Microsoft
Office\Office\1036) et tu complète la mise en forme conditionnelle avec une
seconde condition où la formule est :
=1er cellulle date=liste des jours fériés
La première cellule date ne doit pas être avec les $ et tu définis la mise en
forme...
![]()
Recopie la formule ou le résultat dans la cellule suivante
Macro à copier dans le classeur ouvert
Pour inscrire la macro, faire un clic droit sur l'onglet
de la feuille ouverte, puis Visualisé le code,
et double clic sur la feuille voulue.
Inscrire la macro.
Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
ActiveCell.Value = Right(Range(ActiveCell.Offset(0, -1).Address).Formula, Len(Range("a1").Formula)
- 1)
End Sub
Attention, doit rester sur trois lignes.
Macro qui recopie la cellule de gauche en double cliquant dessus.
Ou une fonction qui recopie dans la cellule en bas à droite.
Public Function TEXTEFORMULE(Cellule As Range)
TEXTEFORMULE = Cellule.Formula
End Function
Pour
obtenir le poucentage, pas de problème, il y
a la touche au clavier.
Pour obtenir le pourmille il faut faire la combinaison
de touche suivante:
ALT+0137
Faire une opération sur une série de valeurs
J'ai une série de valeurs que je voudrais soumettre à une opération;
exemple, les multiplier par 10.Mais! ... Je voudrais
que les résultats ne s'affichent pas dans une colonne différente
(ça, je sais faire) mais qu'ils remplacent les anciennes valeurs.
Copie une cellule dans laquelle tu auras marqué la valeur 10
Sélectionne les valeurs que tu veux multiplier et click à droite sur la souris
collage spécial coche valeurs et multiplication puis ok.
Cela peut être fait avec VBA.
Disons que les données sont dans la plage a1:a10
for i = 1 to 10
cells(i,1) = cells(i,1)*10
next