IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)

FAQ VBA

FAQ VBAConsultez toutes les FAQ

Nombre d'auteurs : 10, nombre de questions : 133, dernière mise à jour : 15 juin 2021 

 
OuvrirSommaireExcelFeuilles

Attention, il n'existe pas d'objet Sheet. Un classeur renvoie deux collections, Sheets et Worksheets. La collection Sheets représente l'ensemble des feuilles d'un classeur quelque soit leurs types. La collection Worksheets représente l'ensemble des feuilles de calcul d'un classeur. De fait, on utilise la collection Sheets que lorsqu'on doit manipuler un classeur ayant des feuilles mixtes (graphiques et calculs), généralement pour ajouter une feuille graphique vierge.

 
Sélectionnez
ActiveWorkbook.Sheets.Add After:=ActiveWorkbook.Sheets.Item(ActiveWorkbook.Sheets.Count), Type:=xlChart
Créé le 28 janvier 2004  par bidou

En effet, sur Excel 97, certains objets ne donnent pas accès aux fonctionnalités Intellisense. Pour contourner le problème, utiliser une variable

 
Sélectionnez
Dim objFeuille As Worksheet

Set objFeuille = ActiveWorkbook.ActiveSheet

A partir de là, objFeuille vous fournira ses propriétés / méthodes

Créé le 28 janvier 2004  par bidou

La gestion de la mise en page de votre feuille pour l'impression passe par l'intermédiaire de la propriété PageSetup. Celle-ci renvoie un objet PageSetup qu'il faut manipuler. Par exemple

 
Sélectionnez
With objFeuille.PageSetup
    .CenterFooter = "&P"
    .CenterHeader = "&F"
    .FirstPageNumber = 3
    .FitToPagesWide = 1
    .Orientation = xlLandscape
    .PrintGridlines = False
    .PrintHeadings = False
End With
objFeuille.PrintOut 1, 1, 1, False

Ce code imprime la feuille en mettant le nom du fichier dans l'en-tête, le numéro de page dans le pied, celui-ci commençant à 3, force l'impression sur une page en largeur en mode paysage. Ni les lignes, ni les numéros de lignes/colonnes ne seront imprimés.

Créé le 28 janvier 2004  par bidou

La méthode Protect permet de gérer plusieurs protections selon les paramètres. Elle est de la forme

 
Sélectionnez
Protect(Password, DrawingObjects, Contents, Scenarios, UserInterfaceOnly)

Tout ces paramètres sont facultatifs. C'est pour cela qu'on trouve souvent des codes ressemblant à :

  • DrawingObjects : protège les contrôles et les formes dessinées de la feuille
  • Contents : Protège le contenu (graphique ou cellules)
  • Scenarios : Protège les cellules variables du scénario
  • UserInterfaceOnly : Protège les UserForm sans protéger le code
 
Sélectionnez
ActiveSheet.Protect Password:="MonPasse", Contents:=True
Créé le 28 janvier 2004  par bidou

Je serais tenté de répondre "à rien". Celui-ci intervient après le recalcul, ce qui fait qu'il a peu d'utilisations concrètes. Néanmoins il permet de déclencher une opération nécessitant d'attendre la fin du recalcul

Créé le 28 janvier 2004  par bidou

Target représente la plage des cellules affectées par l'événement. A ce titre, c'est un objet Range. Pour savoir si cette plage contient un élément d'un plage particulière, on teste l'intersection des deux plages.

 
Sélectionnez
Private Sub Worksheet_SelectionChange(ByVal Target As Excel.Range)
    If Not Application.Intersect("Target", Range("A1")) Is Nothing Then
        .........
    End If
End Sub
Créé le 28 janvier 2004  par bidou

On passe par la méthode Add de la collection Shapes

 
Sélectionnez
Dim objWorksheet As Worksheet
Set objWorksheet = ThisWorkbook.Worksheets(1)
objWorksheet.Shapes.AddOLEObject "Forms.CommandButton.1", , , , , , , 141, 28.5, 153, 27.75

Le bouton sera créé ici en (141;28,5) et d'une taille de 153x27,75

Créé le 1er février 2004  par bidou

Pour ajouter une commande au menu contextuel (apparaissant sur click droit) d'une cellule, il suffit d'ajouter une entrée à la CommandeBar "Cell" (menu contextuel cellule feuille de calcul).

vba
Sélectionnez
'
' Rajout d'une entrée dans menu contextuel
'
Function MenuCell(stCde As String, stMess As String)
Dim mc As CommandBarControls
Dim bo As CommandBarButton
    Set mc = CommandBars("Cell").Controls
    Set bo = mc.Add(msoControlButton, Temporary:=True)
    bo.Caption = stMess
    bo.OnAction = stCde
End Function

Exemple d'utilisation :
Ajout d'une entrée Ajouter Prefixe, permettant, sur click droit sur une cellule, de remplacer la valeur de chaque cellule sélectionnée par la valeur courante précédée d'une chaine de caractére saisie dans une inputBox.

vba
Sélectionnez
'Initialisation dans l'évènement Workbook_open
'
Private Sub Workbook_Open()
    MenuCell "Ajouter Prefixe", "AjoutePrefixe"
End Sub
vba
Sélectionnez
' Fonction exemple..
'
Sub AjoutePrefixe()
Dim Pre As String
Dim s as range, c As Object
   Pre = InputBox("prefixe")
       Set s = Selection
       For Each c In s
          c.Value = Pre & c.Value
       Next
End Sub
Créé le 22 octobre 2006  par bbil

C'est un peu complexe. Pour insérer une image on utilise habituellement :

 
Sélectionnez
Dim objFeuille As Worksheet, objShape As Shape

Set objFeuille = ActiveSheet
Set objShape = objFeuille.Shapes.AddPicture("c:\developpez\logo_developpez.gif", msoFalse, msoCTrue, 100, 100, 70, 70)

Cette méthode oblige de passer les valeurs de hauteur et de largeur (dans notre cas 70,70). Cependant, pour faire ce que vous voulez, il faut passer par la manipulation des objets Pictures

 
Sélectionnez
Dim objFeuille As Worksheet, objPict As Picture

Set objFeuille = ActiveSheet
Set objPict = objFeuille.Pictures.Insert("C:\developpez\logo_developpez.gif")
With objPict
    .Left = Range("G2").Left
    .Top = Range("G2").Top
End With
Créé le 6 février 2004  par bidou

Cette option n'est disponible qu'à partir de la version Excel 2002.

En mode feuille de calcul : Click droit sur l'onglet >> Couleur d'onglet...

Par le code VBA :

vba
Sélectionnez
'-- Appliquer une couleur jaune à l'onglet de la Feuil1 
    Sheets("Feuil1").Tab.ColorIndex = 6
Créé le 22 octobre 2006  par SilkyRoad

Les sources présentées sur cette page sont libres de droits et vous pouvez les utiliser à votre convenance. Par contre, la page de présentation constitue une œuvre intellectuelle protégée par les droits d'auteur. Copyright © 2009 Developpez Developpez LLC. Tous droits réservés Developpez LLC. Aucune reproduction, même partielle, ne peut être faite de ce site ni de l'ensemble de son contenu : textes, documents et images sans l'autorisation expresse de Developpez LLC. Sinon vous encourez selon la loi jusqu'à trois ans de prison et jusqu'à 300 000 € de dommages et intérêts.