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 "&"
Retour liens Excel


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
Retour liens Excel


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

Retour liens Excel

 


Changer la casse dans les cellules

Formule:dans A1 BONJOUR , dans B1 écrire la formule =MINUSCULE(A1)

Ce qui donne bonjour
Pour les majuscules faire la formule =MAJUSCULE(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
Retour liens Excel


Changer un nombre en heure

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
Retour liens Excel


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
Retour liens Excel


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...
Retour liens Excel


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
Retour liens Excel


Touche pour écrire pour mille

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

Retour liens Excel

 


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
Retour liens Excel