VBA macro afficher nom de cellule dans colonne à  côté

Voici une petite macro qui permet d’afficher les noms de cellule d’une colonne dans une autre colonne.

Pratique pour le développement.

Function listeNames(zone, decalagex)
NumLigne = 1
'dans la ligne ci-dessous, indiquez bon range
For Each cellule In ThisWorkbook.Sheets(2).Range(zone).Cells
On Error Resume Next

Dim Ok As Boolean
Dim i As Integer
Ok = False

Set nms = ActiveWorkbook.Names
For i = 1 To nms.Count
'MsgBox(nms(i).Name)
If nms(i).RefersToRange.Address = cellule.Address Then Ok = True
Next

If Ok = True Then
Nom_Cell = cellule.Name.Name
'MsgBox (Nom_Cell)
'dans la ligne ci-dessous modifier le 0,1 par le x,y de deplacement par rapport a la cellule active
cellule.Offset(0, decalagex) = Nom_Cell
Nom_Cell = ""
End If

NumLigne = NumLigne + 1
Next cellule

End Function

Public Sub exec()
    Call listeNames("C1:C90", 2)
    Call listeNames("I51:I62", 2)
    Call listeNames("S53:S77", 2)
    Call listeNames("H15:H22", 1)

End Sub

Macro excel liste des cellules et plages nommées d’un classeur excel

Une petite macro vraiment intéressante.

Explication  : La macro suivante liste les cellules et les plages nommées, dans l’ordre d’index des feuilles, et crée une table des matières avec liens hypertextes.

Attention à  l’exécuter sur une feuille vierge  !

Sub ListeNoms_OrdreFeuilles()
    Dim N As Name
    Dim PlageNom As Range
    Dim i As Byte
    Dim NumLigne As Byte
    Cells(1, 1) = "NAME"
    Cells(1, 2) = "VALUE"
    Cells(1, 3) = "SHEET"
    Cells(1, 4) = "ADDRESS"
    Cells(1, 5) = "LINK"
    NumLigne = 2
    On Error Resume Next
    For i = 1 To Worksheets.Count
        For Each N In Worksheets(i).Parent.Names
            Set PlageNom = Nothing
            Set PlageNom = N.RefersToRange
            If Not PlageNom Is Nothing Then
                If Worksheets(i).Index = PlageNom.Worksheet.Index Then
                    Cells(NumLigne, 1) = N.Name
                    Cells(NumLigne, 2) = N.RefersToRange.Value
                    Cells(NumLigne, 3) = N.RefersToRange.Worksheet.Name
                    Cells(NumLigne, 4) = N.RefersToRange.Address(external:=False)
                    'pour un lien relatif
                    Worksheets(1).Hyperlinks.Add Anchor:=Cells(NumLigne, 5), _
                    Address:="", SubAddress:=N.RefersToRange.Worksheet.Name + "!" + N.RefersToRange.Address(external:=False)
                    'pour un lien absolu
                    'Worksheets(1).Hyperlinks.Add Anchor:=Cells(NumLigne, 5), _
                    Address:="", SubAddress:=N.RefersToRange.Address(external:=True)
                    NumLigne = NumLigne + 1
                End If
            End If
        Next N
    Next i
End Sub


VBA : changer nom cellule de manière récursive

Petite macro VBA qui permet de changer de manière récursive le nom des cellules (le nom pas les valeurs).

Cette exemple

  • Boucle sur la première ligne A1, B2, C3 …
  • Vérifie si le contenu de ce champ
  • Si non vide, il renomme la cellule juste en dessous (A2, B2, C2 …) avec le contenu de la cellule initiale.
Sub NommerChamps()
   For Each c In Range([A1], [IV1].End(xlToLeft))
       If Not IsEmpty(c) Then
             ActiveWorkbook.Names.Add Name:=c, RefersTo:="=" & Range(c.Offset(1, 0), c.Offset(1, 0)).Address
       End If
   Next
End Sub

Nota la fonction offset(x,y) permet de se déplacer de de x,y depuis la cellule en focus.

Import et mappage de xml dans fichier excel 2010

Il est intéressant d’importer des fichiers xml dans un fichier excel pour les consulter et travailler sur leurs données.

Pour ce faire il vous faut

Voici une macro qui lié à  un bouton vous permet de mettre à  jour les données du fichier excel à  partir d’un xml qui respecte le mappage créé ci-dessus et dont l’url est connu dans par exemple  la cellule excel de votre classeur que l’on nommera « xmlUrl »

Sub updtXml()
    'pour utiliser cette fonction il faut dans un premier temps importer des mappages dans le fichier excel
    'cf doc http://msdn.microsoft.com/fr-fr/library/office/gg469857.aspx
    'recuperation url de base du xml
    xmlUrl = Range("xmlUrl").Value
    'Mise à  jour du mappage : monMappage
    'monMappage est le nom du mappage que vous avez importé dans le tuto ci-dessus
    ActiveWorkbook.XmlMaps("monMappage").Import URL:= _
    xmlUrl _

End Sub