| |
Mettre en entête le contenu d'une cellule |
Problème : récupérer la valeur d'une cellule (ici A1 de la
feuille 2) dans l'entête central de la feuille active. |
Macro |
Commentaire |
Sub EnteteValeur()
ActiveSheet.PageSetup.CenterHeader = _ Sheets("Feuil2").Range("A1").Text
End Sub |
'affectation de l'entête central |
A retenir : le PageSetup (mise en page) Préférer Text à
Value surtout pour des nombres formatés |
Trouver le nombre
d'enregistrements filtrées dans une colonne |
Problème : Trouver le nombre d'enregistements filtrés dans
la colonne de la cellule active même si cela n'est pas la colonne où est posée le
filtre. Cette procédure a été corrigée par AV (merci à lui) |
Macro |
Commentaire |
Sub ValeurFiltre()
If ActiveSheet.AutoFilter Is Nothing Then
MsgBox " Pas de filtre"
Exit Sub
Else
Colonne = ActiveCell.EntireColumn.Address
nombre = Evaluate("subtotal(3," & Colonne & ")-1")
MsgBox ("nombre d'enregistrements présents : " & nombre)
End If
End Sub |
'Test de l'existence d'un filtre
'Sortie de la procédure
'Si le filtre existe
'L'adresse de la colonne de la cellule active est récupérée du type B:B
'On utilise la fonction SOUS.TOTAL (3, ) et on retranche 1 (ligne de titre)
'Affiche le résultat |
A retenir : le test sur l'existence du Filtre , la
récupération de l'adresse de la colonne entière, l'utilisation de la fonction
Sous.Total |
Convertir une zone qui
contient des chiffres mais qui est considérée comme du texte |
Problème : Il arrive dans l'importation de bases que des
chiffres soient considérés par Excel comme du texte et non des nombres. |
Macro |
Commentaire |
Sub Conversion()
On Error Resume Next
Dim Cellule As Range
For Each Cellule In Selection
Cellule.Value = Cellule.Value * 1
Next
End Sub |
'Si erreur (type texte), on continue
variable
'Boucle sur toute la sélection en cours
'On multiplie par 1 la valeur trouvée
|
A retenir : cette technique de *1 alliée au On error resume
next, évite d'utiliser les convertisseurs habituels Vba |
|