Une compilation de cette page ci-contre : web.xls (clic droit, enregistrer la cible)

HYPERLIEN


Excel propose de créer des liens hypertextes soit en utilisant une fonction interne, soit en se servant de formules.
Les liens hypertextes peuvent mener à des pages web, à un emplacement particulier dans un classeur excel, des liens de messagerie électronique ...

Afin de créer un lien en utilisant la fonction interne, le classeur doit d'abord être sauvegardé, puis pour insérer un lien, choisissez l'option "Lien hypertexte" dans le menu Insertion.

Créer un hyperlien

formule : = lien_hypertexte(Z100;"cellule Z100")
             
    = lien_hypertexte(feuil2!Z100;"Cellule Z100 sur la Feuille 2")
                 = lien_hypertexte("[http://xlbysteph.freee.fr/MonClasseur.xls]feuil1!F10", D1)
                   où la cellule D1 contient le nom de l'hyperlien (voir l'aide pour d'autres syntaxes)

VBA
:     activecell.formulaR1C1 = "=HYPERlink(R[95]C[23],""cellule Z100"")"

              Autre méthode
              activesheet.Hyperlinks.add Anchor:=selection, address:="", Subaddress:="Feuil1!Z100"
              selection.Hyperlinks(1).Follow NewWindow:=false, addHistory:=true

Un hyperlien existe-t-il ?

dim Val
On Error Resume next
Val = MyCell.Hyperlinks(1).address
On Error Goto 0
if IsEmpty(Val) then Val = MyCell

Colorier tous les hyperliens d'une feuille

Sub test()
for each HL In activesheet.Hyperlinks
HL.Parent.Interior.ColorIndex = 15
next HL
end Sub

Indiquer l'adresse des liens hypertextes dans la cellule à droite de ceux-ci

Sub Hyperliens()
dim rngCell As range
On Error Resume next
for each rngCell In selection
rngCell.Offset(0, 1).value = rngCell.Hyperlinks(1).address
next rngCell
end Sub

Effacer la ligne où figure un hyperlien

Dim hl As Hyperlink
For Each hl In Columns(1).Hyperlinks
hl.Parent.EntireRow.Delete
Next

Effacer les hyperliens d'une plage (mais le contenu de la cellule)

range("A1:C10").hyperlinks.delete
columns(1).hyperlinks.delete

Manipuler l'adresse d'un hyperlien : Right$(ActiveSheet.Hyperlinks(plage.Row).Address, 1) ?

L'hyperlien mène-t-il à un répertoire ou à un fichier

c'est pas infaillible, mais vous pouvez récupérer le dernier caractère de l'hyperlien et vérifier si c'est un anti-slash (\) dans quel cas c'est un répertoire : Right$(activesheet.Hyperlinks(numéro_de_l'hyperlien).address, 1)

Suivre un hyperlien : activeworkbook.followhyperlink address:="mailto:you@yours.com"

Faire suivre les barres de défilement lors d'un clic sur un hyperlien

Lorsqu'on suit un hyperlien, les barres de défilement ne suivent pas :
Ci-dessous deux méthodes pour se déplacer dans une feuille en activant les barres de défilement

'Une procédure évènementielle existe sous XL97 pour effectuer une action quand Excel va suivre un hyperlien.
'On l'emploie ici en vérifiant la présence d'un Point d'exclamation, caractéristique d'un lien dit interne (dans le document lui-même).
A utiliser dans le code du classeur lui-même
Private Sub Workbook_SheetFollowHyperlink(ByVal Sh As Object, ByVal Target As Hyperlink)
'The address should only have a ! if it is a sheet
if InStr(Target.Subaddress, "!") then
application.Goto activecell, true
end if
end Sub

'un autre exemple à inscrire dans le code d'une feuille
Private Sub Worksheet_SelectionChange(ByVal Target As Excel.range)
If Target.Count = 1 And Target.Hyperlinks.Count Then
doEvents
Application.Goto ActiveCell, True
End If
End Sub

'ou encore
Private Sub Workbook_SheetFollowHyperlink(ByVal Sh As Object, ByVal Target As Hyperlink)
If InStr(Target.SubAddress, "dot") Then
Shell ("execute C:\Program Files\Microsoft Office\Office\Flammes.dot")
Else
Application.Goto activecell, True
end If
end Sub

'ou encore, utiliser la méthode Goto pour aller à l'adresse d'une cellule et utiliser le paramètre Scroll=true
Sub myHyperlink()
application.Goto Reference:=range("Sheet1!Z100"), Scroll:=true
end Sub
'Exécuter une macro en suivant un lien si celui-ci mène à la feuille Feuil1
Private Sub Workbook_SheetFollowHyperlink(ByVal Sh As Object, ByVal target
As Hyperlink)
If Sh.Name <> "Feuil1" Then Exit Sub
Application.Run "macro2"
End Sub

Sub macro2()
MsgBox "You are now in the " & activesheet.name & " sheet"
End Sub
Ouvrir une page web (Win95 minimum)

Sub OpenWebPage()
URL = "http://www.j-walk.com/ss/index.html"
x = Shell("start " & URL, 1)
end Sub


Table des matières d'un classeur / Sommaire des feuilles d'un classeur : news

L'activation d'un lien ouvre le document lié mais ferme le document actif, que faire
http://support.microsoft.com/support/kb/articles/Q156/2/64.asp?LN=EN-US&SD=g n&FR=0
 
Empêcher la création automatique d'un lien : à la saisie de "ftp://, http://",etc. Excel crée un hyperlien, que faire ?
How to Prevent the Automatic Creation of Hyperlinks

regardez les articles suivants sur la base de connaissance de Microsoft : articles Q233073 & Q291209

MAIL

Quelques parenthèses le code en html : pour faire cela en html => http://www.isolani.co.uk/newbie/mailto.html
rediriger un email

     il existe des serveurs dont : http://serverwatch.internet.com/mailservers.html
     voir aussi http://www.nameplanet.com/ pour créer une adresse simplifiée et la redirriger sur votre adresse

publipostage : article de Mac Ritchie "Mail Merge, Using Mail Merge with data from Excel", http://members.aol.com/rexx03/excel/mailmerg.htm
MIME, qu'est-ce que c'est :

"Multipurpose Internet Mail Extensions MIME" : cela étend le format de messages électroniques afin d'autoriser des messages dans un format ASCII non US (américain), des messages non textuels, des corps de texte multi-parties ...
des infos en anglais ici : http://www.cis.ohio-state.edu/text/faq/usenet/mail/mime-faq/top.html

mailer avec VB :

http://www.microsoft.com/FRANCE/MSDN/Technologies/CDO/info/info.asp?mar=/FRA NCE/MSDN/Technologies/CDO/info/startupCDO.htm


Word200 & SendMail : http://msdn.microsoft.com/library/officedev/off2000/woproSendMailAttach.htm
Validation d'adresses email : news

Paramètres de la commande mailto
Voilà à quoi cela peut ressembler

"mailto:" & destinataire &
    "?subject=" & sujet &
    "&Body=" & texte &
    "&Cc=" & autresdestinataires1 &
    "&Cci=" & autresdestinataires2 &
    "&Attachment=" & cheminfichier

Quelques remarques sur les variables employées toutes de type string

l'efficacité de syntaxes mailto incluant un attachement ainsi que des destinataires cachés (Cc & Cci) est très aléatoire et vivement déconseillée
la variable destinataire : contient le ou les noms des destinataires (séparés en général par un point virgule)

destinataire="toto@totoworld.com"
destinataire="toto@totworld.com;mafalda@by.mongolito.com"
ou encore, destinataire=array("toto@totworld.com","mafalda@by.mongolito.com")



Envoi de mail avec prise en charge par le système basé sur les hyperliens

'Cet exemple génère un mail en utilisant l'outil de messagerie par défaut. En effet, après l'activation d'un hyperlien, le système prend en charge son ouverture, et lance l'applicatif associé à l'extension du document lié (s'il n'en existe pas, le document est ouvert dans le navigateur par défaut je pense)

Sub SendMail()
dim addressString As String
addressString = "mailto:" & range("A1") & "?subject=" & range("B1") & "&body=" & range("C1")
activeworkbook.followhyperlink address:=addressString
end Sub

'Ce code laisse normalement le soin à l'utilisateur d'envoyer le message, mais si vous voulez procéder à l'envoi en automatique, utilisez les instruction suivantes :

Application.Wait (Now + TimeValue("0:00:02"))
Application.SendKeys "%s"

L'inconvénient de cette méthode (suivre un hyperlien) semble de ne pas pouvoir sauter des lignes dans le corps du document, la méthode ci-dessous conviendrait plus.


Envoi de mail avec prise en charge par le système

Sub Mail_Me()
Shell ("Start mailto:jmlee@freenetname.co.uk") 'vous pouvez bien sûr concaténer des paramètres comme ci-dessus
end Sub  

Espaces & retours à la ligne dans les syntaxes mailto :

Attention avec les espaces et les retours à la ligne, ils ne sont pas autorisés dans les urls, vous pouvez utilisez les instructions suivantes pour les remplacer par leur équivalent hexadécimal. (subj = variable contenant le sujet, Msg = variable contenant le corps du message)

Replace spaces with %20 (hex)
Subj = Application.WorksheetFunction.Substitute(Subj, " ", "%20")
Msg = Application.WorksheetFunction.Substitute(Msg, " ", "%20")

' Replace carriage returns with %0D%0A (hex)
Msg = Application.WorksheetFunction.Substitute(Msg, vbCrLf, "%0D%0A")

Envoyer un classeur excel

Il existe une méthode VBA appelée SendMail ; elle permet de définir un sujet, des destinataires et si oui ou non on désire un accusé de réception, MAIS on ne peut pas définir de corps de message.

thisworkbook.SendMail Recipients:="someone@somewhere.com;someoneelse@somewhereelse.com", Subject:="Here is the workbook"
ActiveWorkbook.SendMail Recipients:=Array("Frank Bell", "Bill Manville", "John doe"), Subject:="Happy New Year", ReturnReceipt:=True

Cela peut se faire entre autres en créant un lien hypertexte par le biais du menu insertion avec une syntaxe du genre suivant :
mailto:xlbysteph@free.fr?attachment="c:\temp\classeur1.xls".
Mais la prise en compte de l'attachement ne marche pas sur tous les systèmes.
Ne comptez pas du tout sur cette méthode, à part peut-être si vous avez XL2000 & qu'il le gère.

Liens sur l'envoi de mail

XL2000: How to Use an Excel Database to Send E-Mail, http://support.microsoft.com/support/kb/articles/Q241/4/98.ASP

XL2000: Types of Formatting and Features Preserved in Workbook Sent as Body of HTML E-mail Message, http://support.microsoft.com/support/kb/articles/q238/5/74.ASP, cet article est mal intitulé, il parle de l'envoi d'une feuille (non pas du classeur) en tant que corps d'un message électronique.

OFF2000: E-mail Button Doesn't Appear on the Standard Toolbar, http://support.microsoft.com/support/kb/articles/Q248/7/35.ASP


 Détecter si un système est présent et envoyer un mail : news
Connaître le type du système de messagerie installé

select Case application.MailSystem
Case xlMAPI
msgbox "Mail system is Microsoft Mail"
Case xlPowerTalk
msgbox "Mail system is PowerTalk"
Case xlNoMailSystem
msgbox "No mail system installed"
end select



Envoi de mail avec Outlook Express (envoi direct)

Sub MailOXpress()
Dim dest$, sujet$, texte$

dest = "f.s@wanadoudou.disdonc"
sujet = "Envoyer un mail depuis Xl"
texte = "Envoyé avec Outlook Express depuis Excel"
Shell "C:\Program Files\Outlook Express\msimn.exe " & _
    "/mailurl:mailto:" & dest & _
    "?subject=" & sujet & _
    "&Body=" & texte & ", 3"

'sendkeys "{ENTER}" pour envoyer le mail

End Sub

des infos sur le paramétrage de la ligne de commande : Q192341 - OLEXP: How to Send Outlook Express Mail from a Command Line: http://support.microsoft.com/support/kb/articles/q192/3/41.asp

Ci-dessous des exemples d'envois de classeur, etc.


Envoi d'un mail avec Outlook, nom du destinataire dans la première feuille, première cellule

Sub envoi()
dest="Zaza"
Set ol=CreateObject("outlook.application")
Set mail=ol.createitem(olmailitem)
mail.body=thisworkbook.sheets(1).cells(1).Text
mail.Recipients.add dest
mail.send
end Sub

Envoi d'un classeur avec Outlook

Sub SendEMailwithAttachments()
dim ol As Object, myItem As Object
Set ol = CreateObject("outlook.application")
Set myItem = ol.CreateItem(olMailItem)
myItem.to = "toto@excel.com"
myItem.Subject = "Test Mail"
myItem.Body = "Hello Word." & Chr(13) & Chr(13) & "Bye All"
Set myAttachments = myItem.Attachments
myAttachments.add "C:\temp\monclasseur.xls"
msgbox "Now sending to " & myItem.to
myItem.Send
Set ol = Nothing
end Sub

'Envoi d'un classeur avec la méthode Sendmail avec liste de destinataires sur une feuille

sub mel()
dim adresse_mel() as string
range("A1").Select
range(ActiveCell, ActiveCell.End(xldown)).Select
'Lecture des adresses dans la colonne A et stockage dans une variable
nb_mel = 0
For Each cellule In Selection
nb_mel = nb_mel + 1
ReDim Preserve adresse_mel(nb_mel)
adresse_mel(nb_mel) = cellule.Value
Next
If nb_mel >= 1 Then
For I = 1 To nb_mel
ActiveWorkbook.SendMail Recipients:=adresse_mel(i), Subject:="Bla bla bla ... "
Next I
End If
end sub

Envoyer un mail sur changement de cellule

Private Sub Worksheet_selectionChange(ByVal Target As Excel.range)
On Error Goto ErrorSubr:
Tempvalue = thisworkbook.worksheets("Sheet1").range ("A1").value
if Tempvalue > 0 then
dim ol As Object
dim MailSendItem As Object
Set ol = CreateObject("Outlook.application")
Set MailSendItem = ol.CreateItem(olMailItem)

dim olns As Object
dim objFolder As Object
Set olns = ol.Getnamespace("MAPI")
with MailSendItem
.Subject = "Essai Mailing"
.Body = Tempvalue
.to = "toto@excel.com"
.Send
end with
Set ol = Nothing
Set MailSendItem = Nothing
Set olns = Nothing
end if
Exit Sub
ErrorSubr:
msgbox ("need a number")
end Sub


Manipulation de Microsoft Outlook

Ci-desssus, vous trouverez quelques exemples de création de mails. Ci-dessous, des liens vous amèneront vers des exemples de manipulation d'Outlook et vous montrons comment manipuler tout système de messagerie.

http://www.outlookcode.com
http://www.cdolive.com/cdo5.htm
http://www.slipstick.com

Cherchez également la page "Slovak Technical Services Code Samples", elle contient de bons exemples.


Les Requêtes Web

Vous trouverez ici juste une ou deux choses sur les queries mais plus généralement sur comment récupérer une page web

Regardez l'objet QueryTables dans l'aide VBA et les articles suivants de Microsoft Laissez-vous guider par l'aide : tapez-y "Web, queries", et choisissez l'option "Get Data from a Web source" !!
De bonnes pages en la matière sur Le site de J@C : http://jacxl.free.fr/cours_xl/accueil.html
http://support.microsoft.com/support/kb/articles/Q157/4/82.asp?community=0&L N=FR-FR&SD=SO&ss=frkb&FR=0
http://support.microsoft.com/support/kb/articles/q157/4/82.asp
http://www.microsoft.com/Office/ORK/025/025.htm#ORK025C2 (XL97: How to Create Web Query (.iqy) Files )
Article de MS n° Q162080 - XL97: How to Programmatically Perform a Web Query
Article de MS n° Q162051 - XL97: How to Specify Dynamic Web Query Parameters
Article de MS n° Q187364 - XL98: How to Programmatically Perform a Web Query
Article de MS n° Q190803 - XL98: How to Specify Dynamic Web Query Parameters
Exemple non testé de query

Sub URL_Get_Query()
dim URL1 As String
dim tempo As Worksheet, rngList As range

URL1 = "URL;http://quote.pathfinder.com/money/quote/qc?symbols=AAPL"
Set tempo = thisworkbook.sheets(1)
with tempo.QueryTables.add(Connection:=URL1, destination:=tempo.range("A1"))
.BackgroundQuery = true
.TablesOnlyFromHTML = false
.Refresh BackgroundQuery:=false
.SaveData = true
end with

end Sub

La bourse et excel

Téléchargement les cours de la bourse au format excel : http://bourse.lesechos.fr/BOURSE/fr/telechargement/telechargement.htm
News


Exemple de lecture d'une page web en manipulant IE : news, news sur le web

Conversion en HTML

Regarder l'article de Microsoft "Excel and the Web", qui apprend pas mal de choses pour débuter!!!, ici je crois
Enregistrer un fichier au format HTML (XL2000) : news
Convertir Excel en HTML, article de Microsoft
Convertir Excel en XML : news
Ouvrir une page Web au format texte (XL2000) : news
Le site de J@C : http://jacxl.free.fr/cours_xl/accueil.html
Alimenter des bases excel à partir du web !? peut-être qu'en suivant les liens ci-dessous

http://www.microsoft.com/france/scripting/default.htm?/FRANCE/scripting/WindowsHost/doc/wsRunWscript.htm
http://www.ccim.be/ccim328/VB/index.htm
http://cwashington.netreach.net/main_site/default.asp?topic=news


Un exemple d'utilisation par code de l'assistant de conversion HTML d'Office

Sub SaveAsHtml()
'this saves as html
Dim ObjectToConvert 'As Variant
Dim Reslult As Integer
Set ObjToConvert = Sheets("sheet5").Range("b1:r14")
AddIns("Internet Assistant Wizard").Installed = True
Result = htmlconvert(rangeandcharttoconvert:=Sheets("sheet5").Range("b1:r143"), useexistingfile:=False, usefrontpageforexistingfile:=False, addtofrontpageweb:=False, codepage:=1252, htmlfilepath:="c:\My Documents\wssnba.htm", linebeforetablefullpage:=True, namefullpage:="VolFreak")
Application.Save : ActiveWindow.Close

'this publishes to ftp,but not as html (I have tried File format html)
Workbooks.Open FileName:="C:\My Documents\wssnba.htm"
Windows("wssnba.htm").Activate
ActiveWorkbook.SaveAs FileName:="ftp://ftp.xoom.com/wssnba.prn", FileFormat :=xlTextPrinter, CreateBackup:=False
End Sub

Un autre exemple

Sheets("toto").Select
With ActiveWorkbook.PublishObjects("toto")
.HtmlType = xlHtmlStatic
.Filename = Nomdufichierhtml
.Publish (False)
End With


Création, Importation et Exportation de fichiers Excel et HTML

Créer un fichier excel à partir du web

Piste de C. H., le lundi 10 avril 2000 14:30, sujet "Re: API Excel"

Si tu es sous W98, regarde les exemples dans le dossier \Windows\Samples Sinon: http://www.microsoft.com/france/scripting/default.htm?/FRANCE/scripting/WindowsHost/doc/wsRunWscript.htm http://www.ccim.be/ccim328/VB/index.htm
http://cwashington.netreach.net/main_site/default.asp?topic=news


Excel à partir d'ASP

Naviguer à partir de cet article de MS : http://support.microsoft.com/support/kb/articles/Q112/8/13.asp

Importer une page web sur une feuille de calcul : news
Enregistrer une page au format HTML : bon message en la matière : news
Code simple pour enregistrer un graphique dans une page web : news
Instruction VBA pour Excel 97 avec l'assistant de conversion installé : Run "DoHTMLCommand"

Transfert FTP de fichiers

Limitations of Internet Transfer Control and the references it contains, http://support.microsoft.com/support/kb/articles/Q233/0/37.ASP
Lister les fichiers d'un site FTP

Regarder là http://www.mvps.org/vbnet/code/network/ftplist.htm et là http://kpdteam.tripod.com/vbasic/winftp.zip.htm
Chercher dans le MSDN
Ou utiliser un shell pour exécuter FTP, exécuter un ls et faites un import du fichier résultat sur le disque pour le manipuler


Envoi un mail à une boîte unix par FTP : http://www.excelfiles.com/tips/tip0003.html
Envoyer un fichier avec VB : http://support.microsoft.com/support/kb/articles/Q175/1/79.ASP Implementing FTP Using WinInet API from VB
Ouvrir un fichier xls sur un serveur ftp à un moment donné : m'écrire pour obtenir un fichier exemple
Un classeur exemple intitulé "TP File Transfer for WindowsNT" sur le site de Ole P. Erlandse

Connexion/ Déconnexion

Connexion à un réseau : Randy Birch's site http://www.mvps.org/vbnet/_frames/code/ndxnetw.htm

Se connecter et se déconnecter : news

Etes-vous connecté

Determining Network Connections with InternetGetConnectedState
Six wrapper routines returning system network connection information.
http://www.mvps.org/vbnet/code/network/internetgetconnectedstate.htm

Message de news : news, news

Faire un ping sur un nom de domaine en vba

Sample: PingCtrl.exe Uses Winsock2 Features from Visual Basic
http://support.microsoft.com/support/kb/articles/Q185/7/26.asp

Composer un numéro de téléphone

Des exemples : news, news, liens + exemple : news
voir aussi là : xl_et_multimedia.html

Divers

Regarder l'article de Microsoft "Excel and the Web", qui apprend pas mal de choses pour débuter!!!, ici je crois


Contrôle Web Browser : Il existe un objet 'Navigateur Web Microsoft' que l'on peux insérer dans un userform.
Le fichier OCX est fournit se pense avec Excel. Ce fichier s'appelle SHDOCVW.OCX
Manipulation du contrôle WebBrowser : news

Manipuler Internet Explorer : news sur le web

Importer une valeur du CAC 40

J@C, sujet: "Re: importer une valeur du CAC40", le vendredi 3 novembre 2000 21:03

Function valor(sicovam)
Workbooks.Open FileName:= _
"http://www.boursorama.com/cours33.phtml?code=" & sicovam &
"&choix_bourse=pays%3D33"
Cells.MergeCells = False
valor = Cells.Find(What:="Dernier", After:=ActiveCell, LookIn:=xlFormulas, _
LookAt:=xlWhole, SearchOrder:=xlByRows, SearchDirection:=xlNext, _
MatchCase:=False).Offset(0, 2)
ActiveWorkbook.Close (False)
valor = 6.55957 * WorksheetFunction.Substitute(valor, " (c)", "")
End Function


Créer des favoris, à partir d'une liste de liens sur une feuille excel : news

Effacer une page du cache : news