|
Une nouvelle page ! Comment personnaliser facilement le ruban d'Excel 2007 ? Faites un petit tour sur la page Trucs et Astuces !!! Du moins celles dont le sujet revient régulièrement ou qui ont un contenu particulier ou pédagogique. Je compte sur vous pour m'envoyer ou m'indiquer celle qui vous semblera digne d'intérêt!!! Toutes vos remarques sont attendues. Cette FAQ est ouverte à tous, si vous voulez faire paraître un texte ou un article concernant Excel, envoyez moi un courriel. Toutes les procédures, formules ou fonctions sont issues du forum, ou avec autorisation de l'auteur. NETIQUETTE DU FORUM. A l'intention des personnes qui viennent pour la première fois sur le forum Microsoft.Public.Fr.Excel Vous pourrez en savoir plus sur La Netiquette en consultant notamment ce document : En bref dans vos courriers:
Index des Questions/Réponses. [top] GENERALITES
QUESTIONS RITUELLES
CELLULES ET PLAGES
DATES
FICHIER - FEUILLE
GRAPHIQUES
IMPRESSION
OUTIL
USERFORM
EXCEL ET LES AUTRES
Et le MAC
Test
TELECHARGEMENT.
GENERALITES Quel est le site archive du forum MPFE? Le forum sur "Le site du Support Microsoft France" Où trouver un lexique donnant la correspondance Normalisation de l'écriture de code Quels sont les paramètres de lancement d'Excel ? Peut-on joindre des pièces à une question ? Peut-on répondre par une pièce jointe ? Les tableurs: Origine A l'origine, Microsoft a commercialisé un tableur appelé Multiplan en 1982. Il n'y a pas eu de version 1.0 pour éviter la confusion avec la version d'Apple. 1987 - Excel 2.0 for Windows 1990 - Excel 3.0 1992 - Excel 4.0 1993 - Excel 5.0 1995 - Excel pour Windows 95 (version 7.0) – inclut aussi dans Microsoft Office 95 1997 - Excel 97 (version 8.0) - inclut aussi dans Microsoft Office 97 1999 - Excel 2000 (version 9.0) inclut aussi dans Office 2000 2001 - Excel 2002 (version 10) inclut aussi dans Office XP 2003 - Excel 2003 (version 11) inclut aussi dans Office 2003 2007 - Excel 2007 (version 12) inclut aussi dans Office 2007
QUESTIONS RITUELLES Combien y a t-il de colonnes disponibles dans Excel?256 colonnes et c'est tout !!! Mais 65536 lignes. Les limitations d'Excel 2000. Et pour les autres versions et bien...consulter l'aide: Taper "limites d'Excel" et consulter: Configuration requise pour Microsoft Excel. Conversion de nombre en lettre Au choix: http://xcell05.free.fr/pages/telecharge/index.html (fonction NUMTEXTE) MoreFun http://perso.wanadoo.fr/frederic.sigonneau/office/Nb2Words.zip http://www.fundp.ac.be/~jmlamber/ http://www.cybercable.tm.fr/~pnoss/Chiffre_Lettre.bas http://dj.joss.free.fr/nblettre_svm.htm Où trouver un logiciel pour récupérer un fichier Excel97 endommagé. Il faut utiliser un utilitaire de récupération de fichier comme celui de Microsoft http://www.microsoft.com/IntlKB/France/articles/ ou http://www.microsoft.com/france/support/data/Visioxl8.exe ou cleaner.xla à télécharger sur: http://www.microsoft.com/france/support/data/recover.exe ou version démo de officerecovery à télécharger sur: http://www.officerecovery.com/excel/
Comment récupérer des données d'un fichier endommagé? Voilà quelques méthodes de récupération de données: Enregistrez le fichier au format HTML Utilisez des références externes pour créer des liens vers le fichier endommagé. Si vous pouvez ouvrir le fichier, enregistrez-le au format SYLK (Symbolic Link). Utilisez la macro de récupération de fichiers Microsoft Excel.(Office XP) Ouvrez le document sous Microsoft Word. Ouvrez le fichier dans la visionneuse Microsoft Excel. Ouvrez le fichier avec Open Office. Vous pourrez ainsi recuperer aussi vos macros Comment figer l'écran pendant l'execution d'une macro ? Mettre en début de code l'instruction suivante : Application.ScreenUpdating = False Comment supprimer l'apparition du message de confirmation lors de la suppression d'une feuille ? Application.DisplayAlerts=False Sheets(x).Delete Comment remplacer le point par une virgule ? =CNUM(SUBSTITUE(A1;".";",")) Comment faire des calculs avec les heures négatives ? - Tu passes au calendrier depuis 1904 (Outils Options [Calcul] et cocher Calendrier depuis 1904). C'est le plus simple mais attention : aux copier-coller entre classeurs, aux formules de calcul sophistiquées de travail sur les dates, à l'utilisation de VBA... - Tu calcules avec un si et la fonction texte comme par exemple: =si(B1(A1;"-";"")&TEXTE(ABS(B1-A1);"hh:mm:ss") mais tu récupères du texte, sur lequel tu ne peux plus calculer ensuite. - Tu passe en heures décimales en multipliant par 24 et en affichant au format standard, mais tu n'as plus l'affichage hh:mm:ss, et bonjour la lisibilité :-((( - Mais un tour sur la page "dates/heures" de Laurent reste indispensable! http://xcell05.free.fr/pages/form/dateheure.htm Comment supprimer une liaison vers un autre fichier, sachant que ce fichier a été supprimé ....? Téléchargez FinLink.zip qui ce trouve sur le site de Stephen Bullen à l'adresse: http://www.oaltd.co.uk/MVP/Default.htm Ou à la main : Dans le classeur lié :Edition/Liaisons/Modifier la source Donner le chemin du classeur (celui qui contient les formules avec liaison) Cela supprimera la liaison avec l'autre classeur. Est-il possible de coloriser les onglets sous Excel comme on peut le faire sous Quattro ? NON...Impossible pour l'instant! ni avec 97 ni avec 2000 Excel 2010..vous dites ?! Ah Bon ? C'est maintenant possible avec la version "XP" ou 2002 (v. 10)... Comment faire pour incrémenter un numéro de facture à chaque ouverture d'un modèle? Ci-dessous une solution qui suppose que ton modèle ("Fact.xlt" dans le code ci-dessous) contienne une cellule nommée (Insertion\Nom\Définir) "numFact", cellule où s'inscrira le numéro incrémenté. A l'ouverture d'un classeur basé sur le modèle ("Fact1.xls"), la cellule "numFact" est incrémentée et le classeur est réenregistré comme modèle "Fact.xlt", écrasant le précédent et sauvegardant ainsi le nouveau numéro. A la fermeture, si le classeur "Fact1.xls" n'a pas été enregistré, on considère que le numéro de facture n'a pas servi. Le modèle est réouvert et la cellule "numFact" est décrémentée pour proposer à la création du prochain classeur basé sur le modèle un numéro de facture "cohérent" avec les précédentes factures enregistrées. Private Sub Workbook_Open() If ActiveWorkbook.Path = "" Then [numFact] = [numFact] + 1 ActiveWorkbook.Saved = True ActiveWorkbook.SaveCopyAs(Application.TemplatesPath & "Fact.xlt") End If End Sub Private Sub Workbook_BeforeClose(Cancel As Boolean) chemXlt = Application.TemplatesPath & "Fact.xlt" If ActiveWorkbook.Path = "" Then Set wbk = Workbooks.Open(chemXlt) With wbk.ActiveSheet .Range("NumFact") = .Range("NumFact") - 1 End With wbk.Close True End If End Sub Frédéric S. Comment supprimer un module nommé Toto du classeur test.xls? Sub Supprime_Module() Workbooks.Open "C:\Temp\Test.xls" On Error Resume Next With ActiveWorkbook.VBProject.VBComponents .Remove .Item("Toto") End With On Error GoTo 0 End Sub Comment supprimer tout le code du classeur actif ? Sub SupprToutCodeVBA() 'L Longre, mpfe Dim VBC As Object With ActiveWorkbook.VBProject For Each VBC In .VBComponents If VBC.Type = 100 Then With VBC.CodeModule .DeleteLines 1, .CountOfLines .CodePane.Window.Close End With Else: .VBComponents.Remove VBC End If Next VBC End With MsgBox "Modules et macros du classeur actif supprimées.", _ vbInformation End Sub Comment activer le Num(ou Caps) lock à chaque lancement d' Excel? Private Declare Function SetKeyboardState Lib "User32" _ (kbArray As Byte) As Long Private Declare Function GetKeyboardState Lib "User32" _ (lpKeyState As Byte) As Long Sub TestLock() Dim KeyState(0 To 255) As Byte GetKeyboardState KeyState(0) KeyState(&H90) = 1 'Num Lock 'KeyState(&H14) = 1 'Caps Lock SetKeyboardState KeyState(0) End Sub Comment récupérer le nom d'utilisateur d'un poste ? Declare Function GetUserName Lib "ADVAPI32.DLL" Alias "GetUserNameA" _ (ByVal lpBuffer As String, nSize As Long) As Long Function UserName() Dim S As String Dim N As Long Dim Res As Long S = String$(200, 0) N = 199 Res = GetUserName(S, N) UserName = Left(S, N - 1) End Function Comment utiliser les fonctions Excel dans une procédure Visual Basic ? Il faut passer par l'objet WorksheetFunction. Par exemple, l'utilisation de la fonction MIN: Sub UseFunction() Dim maPlage As Range Set maPlage = Worksheets("Feuil1").Range("A1:C10") réponse = Application.WorksheetFunction.Min(maPlage) MsgBox réponse End Sub Tout ceci est très bien expliqué dans l'aide: Utilisation des fonctions de feuille de calcul Microsoft Excel dans Visual Basic Philippe P. Comment supprimer le message "Voulez-vous activer les macros ... ?" au démarrage d'Excel ? Menu "outils"-"macro"-"sécurité"-"niveau de sécurité"-niveau bas Avec Excel 2000 on peut conserver le niveau de sécurité haut en utilisant Selfcert.exe pour certifier les macros. Normalement, SelfCert s'installe avec office 2000. Il se trouve dans le répertoire '...\Microsoft office\office\selfcert.exe'. Une fois le certificat créé, signez le projet VBA par: Menu Outils/Signatures électroniques cliquez sur 'Choisir...' et sélectionnez le certificat. Le message n'apparaîtra plus.
Comment changer le logo Excel ? La procédure de Laurent: http://xcell05.free.fr/pages/api/logo.htm
Traduction des fonctions Français-Anglais Télécharger ces classeurs:VBALIST.XLS et TRADUCFCT.XLS fctbrfr.zip 78 ko
Comment utiliser Msmap d'excel 97 avec xl 2003 ? Fonctionne aussi avec Excel 2007 A- Récupérer et copier le répertoire Datamap d'excel 97 dans : C:\Program Files\Fichiers communs\Microsoft Shared B-Lancer MSMAP.exe (du répertoire datamap) à la demande du dossier Données répondre: C:\Program Files\Fichiers communs\Microsoft Shared\Datamap\Data C-Pour l'utiliser dans excel: Faire Insertion=>Objet=>Nouvel objet Sélectionner Microsoft MAP dans la liste RaMa
Comment utiliser Microsoft Note-It d'Excel 5 avec Excel 2003 ? Microsoft Note-It est un petit utilitaire fonctionnant avec Excel 5 et Windows 3.1 servant à ajouter des commentaires (des notes) dans une feuille de calcul. L'ancêtre des commentaires et annotations en quelques sortes. Le petit avantage réside dans le fait qu'une image est associée au commentaire (ce qui peut agrémenter de manière sympathique votre feuille de calcul) et qu'un double clique sur cette image affiche le commentaire, il est aussi possible d'affecter une macro à cette image. 1) Téléchargez l'archive ci-dessous composée des 3 fichiers: note-it.exe, note-it.help et note-it.reg. noteit.zip 37 ko  2) Créez un dossier Note-It dans : C:\Program Files\Fichiers communs\Microsoft Shared\ et copiez ces 3 fichiers dans ce dossier. 3) Ouvrez le fichier de registre "note-it.reg" avec le bloc-note et vérifiez que la portion de ligne en italique corresponde bien avec l'emplacement du fichier note-it.exe. : HKEY_CLASSES_ROOT\Note-It\protocol\StdFileEditing\server = C:\Program Files\Fichiers communs\Microsoft Shared\Note-It\NOTE-IT.EXE Fermez et enregistrez. 4) Double-cliquez sur le fichier "note-it.reg" pour le fusionner avec votre base de registre. Sauvegardez par prudence votre base de registre si vous le désirez. Les manipulations décrites ci-dessus sont sans risque. 5) Lancez Excel et pour utiliser Note-It faites Insertion=>Objet=>Microsoft Note-It.
Comment vider le Presse-Papier? Application.CutCopyMode=False Ou bien Private Declare Function OpenClipboard Lib "user32" (ByVal hwnd As Long) As Long Private Declare Function EmptyClipboard Lib "user32" () As Long Private Declare Function CloseClipboard Lib "user32" () As Long Sub VidePP() OpenClipboard 0 EmptyClipboard CloseClipboard End Sub
CELLULES ET PLAGES Comment trouver la première cellule vide? Méthode 1: ActiveCell.End(xlDown)(2).Select ou ActiveCell.End(xlToRight)(1, 2).Select Méthode 2: [A65536].Select Selection.End(xlUp)(2).Select Méthode 3: Range("A1").Select While IsEmpty(ActiveCell) = False ActiveCell.Offset(1, 0).Activate Wend Comment déplacer une sélection? Selection.Offset(+/-nb de lignes,+/- nb de colonnes).Select Comment remplacer G178 par la valeur de ma variable Ligne dans: For Each Cell In Range("G2:G178")? For Each Cell In Range("G2:G" &maLigne) Exemple de variable pour une somme I = 10 Range("A1").FormulaLocal = "=SOMME(A2:A" & I & ")" Je voudrais créer une macro me permettant d'aller à la dernière ligne + 1 d'une colonne X et d'y faire un total ? Par exemple, pour mettre la somme des cellules A2:Ax (Ax = dernière cellule remplie de la colonne A): With Range("A2", [A:A].Find("*", [A1], , , , xlPrevious)) .Item(.Count + 1).Formula = "=SUM(" & .Address(0, 0) & ")" End With Peut-on paramètrer la police du commentaire avant la création de ce dernier? Sub AjoutCommentaire() With ActiveCell.AddComment.Shape.OLEFormat.Object .Text = "" .Font.Name = "Times New Roman" .Font.Size = 14 End With SendKeys "%IM" End Sub 'S'il s'agit de modifier la taille de la police a posteriori dans tous les commentaires du classeur: Sub ModifCommentaires() Dim Wksht As Worksheet, C As Comment For Each Wksht In Worksheets For Each C In Wksht.Comments C.Shape.OLEFormat.Object.Font.Size = 12 Next C Next Wksht End Sub Des infos: http://touareg.citeweb.net/aideinformatique/actioncellule.htm Comment enregistrer une plage en fichier html? http://dj.joss.free.fr/web.htm#fichhtml Une nouvelle rubrique Excel et le HTML : http://jacxl.free.fr/cours_xl/accueil.html Comment enregistrer une plage en fichier texte? Enregistrement d'une plage xl en txt Existe-il un moyen pour parcourir toutes les cellules de la zone d'impression ? For Each Cellule In Range(ActiveSheet.PageSetup.PrintArea) Comment masquer toutes les lignes pour lesquelles une cellule particulière est vide ? For Each ligne In ActiveSheet.UsedRange.Rows If ligne.Cells(1, 12).Value = Empty Then 'si la cellule de la colonne L est vide, la ligne est masquée ligne.EntireRow.Hidden = True End If Next Et pour les colonnes: For Each col In ActiveSheet.UsedRange.Columns If col.Cells(2, 1).Value = Empty Then 'si la cellule de la ligne 2 est vide, la colonne est masquée col.EntireColumn.Hidden = True End If Next Comment trouver l'adresse de la cellule qui contient la plus grande valeur ? Sub MaxAdr() valrech = Application.WorksheetFunction.Max(Range("A1:B30")) Set cellmax = Range("A1:B30").Find(valrech) MsgBox cellmax.Address End Sub Comment connaître la lettre de la colonne et le n° de la ligne? Pour le numéro de la colonne: colonne = ActiveCell.Column Colonne = Left$(ActiveCell.Address(0, 0), (ActiveCell.Column < 27) + 2) Ligne = ActiveCell.Row Mais pourquoi ( <27) +2 ??? et la fonction Split = Split(ActiveCell.Address, "$")(1) Laurent peut nous expliquer ce que c'est ??? La réponse de Laurent, Catherine et Eric Une petite contribution à la recherche de la lettre de colonne, histoire de varier les plaisirs ! sub cherchCOL() MsgBox Mid(ActiveCell.Address, 2, InStr(2, ActiveCell.Address, "$") - 2) end sub AV Comment multiplier les éléments d'un tableau et renvoyer ce tableau ? Sélectionner votre tableau au préalable! Sub Tabx2() Dim myTab As Variant Dim y As Integer Dim x As Integer myTab = Selection.Value 'Boucle pour chaque colonne For y = LBound(myTab, 2) To UBound(myTab, 2) 'Boucle pour chaque ligne For x = LBound(myTab, 1) To UBound(myTab, 1) 'Multiplie chaque élément de la sélection par 2 myTab(x, y) = myTab(x, y) * 2 Next x Next y 'Renvoie le tableau dans la sélection Selection.Value = myTab End Sub Comment utiliser "ReDim" dans un tableau ? Voilà un exemple Cette macro garde en mémoire les valeurs entrées et les affiche ensuite. Appuyer sur la touche "Echap" pour arrêter les entrées Sub InputTab() Dim NbValeur As Integer Dim Item As Variant Dim myTab() As Integer ReDim myTab(0) 'Initialisation du tableau Do NbValeur = Application.InputBox("Tapez un nombre", Type:=1) myTab(UBound(myTab)) = NbValeur ReDim Preserve myTab(UBound(myTab) + 1) Loop Until NbValeur = False 'Annulation de l'initialisation ReDim Preserve myTab(UBound(myTab) - 1) 'Affichage des valeurs entrées For Each Item In myTab If Item <> False Then MsgBox "Vous avez entré " & Item 'Inscrit les valeurs entrées dans la colonne B compteur = compteur + 1 ActiveSheet.Range("B" & compteur).Value = Item Next End Sub Comment supprimer certains caractères dans toutes les cellules ? Une petite page sur cette procèdure. Comment rechercher un mot dans toutes les feuilles ? Une petite page sur cette procèdure. Comment rechercher un mot et le remplacer par un autre? Denis Michon Une petite page sur cette procèdure. Comment faire pour insérer une ligne sur deux? 'Une petite macro paramétrable de Pierre Fauconnier Sub InsererLignes() Dim LigneDebut As Long, LigneFin As Long Dim Ligne As Long Dim Pas As Long ' DEBUT ZONE PARAMETRES ' Paramétrisation de la macro LigneDebut = 1 ' A adapter LigneFin = 20 ' A adapter Pas = 2 ' A adapter ' FIN ZONE PARAMETRES 'On commence à insérer à lignedebut+1 Ligne = LigneDebut + 1 Do While Ligne <= LigneFin Rows(Ligne & ":" & Ligne + Pas - 1).Insert shift:=xlDown ' on saute "Pas"+1 lignes pour se positionner sur la nouvelle ' ligne avant laquelle on insère Ligne = Ligne + Pas + 1 ' On adapte LigneFin à Lignefin+"Pas" ' puisqu'on a inséré "Pas" lignes LigneFin = LigneFin + Pas Loop End Sub Comment déplacer ou détruire les lignes contenant une occurence? Une petite page de Pat sur cette procèdure. Comment faire clignoter une cellule? Daniel.J Sub Clignot() Range("A1").Select For compteur = 1 To 20 With Selection.Font .Name = "Arial" .Size = 14 .ColorIndex = 2 End With Application.Wait Now + TimeValue("00:00:01") 'Pour augmenter la vitesse du clignotement 'Application.Wait Now + (TimeValue("00:00:01")) / 2 With Selection.Font .Name = "Arial" .Size = 14 .ColorIndex = 0 End With Application.Wait Now + TimeValue("00:00:01") Next End Sub 'Ex de Valeur de ColorIndex: '1= noir, 2= blanc, 3= rouge, 4= vert,5= bleu, 6= jaune Et un très bon truc de Bill Manville Combiner les styles et une macro Application.OnTime'To create a blinking cell: 'If you define a new Style (Format / Style / Flash/ Add ) and apply 'that style to the cells you want to flash, paste the following code 'into a module sheet and run the procedure Flash from Auto-Open if 'desired you will get the text flashing alternately white and red. Dim NextTime As Date Sub Flash() NextTime = Now + TimeValue("00:00:01") With ActiveWorkbook.Styles("Flash").Font If .ColorIndex = 2 Then .ColorIndex = 3 Else .ColorIndex = 2 End With Application.OnTime NextTime, "Flash" End Sub Sub StopIt() Application.OnTime NextTime, "Flash", schedule:=False ActiveWorkbook.Styles("Flash").Font.ColorIndex = xlAutomatic End Sub Quelle est la différence entre UsedRange et CurrentRegion? Denis Martin Voyons la différence entre UsedRange et CurrentRegion en posant l'hypothèse que la feuille "Feuil1" contient 4 plages de cellules différentes, à savoir: A1:D9 B12:D14 E18:G24 H14:J16 UsedRange UsedRange permet de sélectionner une plage de cellules qui comporte des plages de cellules discontinues. Précision de AV: Il serait peut-être bon d'ajouter que le "UsedRange" délimite la plage en incluant les cellules vides si celles-ci ont été formatées d'une façon quelconque (même si ont les remet au format standard ensuite...), ce qui, dans certaines manips sur les plages, ne manque pas de réserver qques surprises ;-) AV Sub testUsedRange() Worksheets("Feuil1").Activate ActiveSheet.UsedRange.Select '// Permet de sélectionner la plage de cellules A1:J24 '// qui inclut nos 4 plages de cellules discontinues contenues dans la feuille Feuil1.. End Sub CurrentRegion CurrentRegion permet de sélectionner la plage de cellules où se trouve le pointeur de cellule si celui-ci est situé dans cette plage de cellules. Si le pointeur de cellule est situé sur une cellule contigüe à la plage de cellules, alors la plage de cellules et les cellules contigües aux rangées ou aux colonnes de cette plage qui sont situées sur la même rangée ou colonne du pointeur de cellule sont sélectionnées. Si le pointeur de cellule est situé à l'intersection d'une colonne et d'une rangée contigües à la plage de cellules, alors la plage de cellules, la colonne et la rangée situées sur la même rangée ou colonne du pointeur de cellule sont sélectionnées. EXEMPLES (en tenant compte des hypothèses ci-dessus) :
Sub test() Worksheets("Feuil1").Activate ActiveCell.CurrentRegion.Select '// Ici, ActiveCell fait référence au pointeur de cellules. End Sub Comment limiter la zone de scroll? ActiveSheet.ScrollArea = "A1:H20" et pour rétablir: ActiveSheet.ScrollArea = "" Une image transparente pour une plage de cellule. Daniel.j Excel 2003 - L'astuce consiste à insérer une image vide et transparente (un gif transparent créer avec Photoshop par exemple) et de la remplir avec l'image qui servira de toile de fond à la plage de cellule. Il est en plus tout a fait possible de modifier par la suite les cellules de la plage en les sélectionnant avec les touches de direction du clavier. Téléchargez le fichier, vous y trouverez la marche à suivre et un exemple. fondtransparent.zip 32 ko
DATES Comment avoir les dates avant 1900? Oui, c'est possible, il suffit d'acquérir une macro complémentaire. http://officeupdate.microsoft.com/info/3rdExcel8.htm qui renvoie vers : http://www.j-walk.com/ss/excel/files/xdate.htm Comment avoir le numéro de la semaine? =ENT((D-SOMME(MOD(DATE(ANNEE(D-MOD(D-2;7)+3);1;2);{1E+99;7})*{1;-1})+5)/7) Elle marche pour toutes les dates "D", sauf le 1/1/1900 (=> #NOMBRE!). de Laurent Une explication détaillée sur le numéro de semaine par Laurent Longre. Et une Fonction VBA calculant le N° de semaine d’une date quelconque.(en fin de page) Exercice, en amicale réponse à LAURENT LONGRE dont j’ai apprécié la belle formule, traitant du même sujet, avec ses 15 pages d’explications très précises. Bravo à lui.Yves Chevalier Je recherche à afficher automatiquement le 1er jour du mois d'une cellule... Exemple pour A1 : =DATE(ANNEE(A1);MOIS(A1);1) Et pour avoir le jour en toute lettre : Format= jjjj Plus court Pour trouver le 1er jour du mois: =A1-JOUR(A1)+1 Un appel de fonction au lieu de trois avec =DATE(ANNEE(A1);MOIS(A1);1) Daniel M. "LA" fonction VBA de conversion de date dans le calendrier républicain de Laurent Longre. http://xcell05.free.fr/pages/form/dateheure.htm Comment vérifier si la date inscrite est bien un lundi? et comment donner le lundi suivant et précédent? Sub TestJour() datedujour = Range("a1").Value If Weekday(datedujour) = 2 Then MsgBox "Le " & datedujour & " est bien un lundi" Else LundiNext = DateValue(datedujour) + 9 - Weekday(datedujour) LundiPrev = DateValue(datedujour) + 9 - Weekday(datedujour) - 7 MsgBox "Le " & datedujour & " n'est pas un lundi" & Chr(10) & Chr(10) & _ "Le lundi suivant est le : " & LundiNext & Chr(10) & _ "Le lundi précédent est le: " & LundiPrev, vbOKOnly + vbCritical, "Test du Jour" End If End Sub Précision de Daniel M. Dans TestJour(), les algos pour trouver les Lundi suivant/précédent ne fontionnent pas avec une date de départ le dimanche. Il vaut mieux: Sub TestJour2() Dim DateDuJour As Date, LundiNext As Date, LundiPrev As Date DateDuJour = CDate(Range("A1").Value) If Weekday(DateDuJour) = 2 Then MsgBox "Le " & DateDuJour & " est bien un lundi." Else LundiPrev = DateDuJour - Weekday(DateDuJour - 2) LundiNext = DateDuJour + 7 - Weekday(DateDuJour - 2) MsgBox "Le " & DateDuJour & " n'est pas un lundi." & vbNewLine & vbNewLine & _ "Le lundi précédent est le: " & LundiPrev & vbNewLine & _ "Le lundi suivant est le: " & LundiNext, vbOKOnly, "Test du Jour" End If End Sub Comment insérer la date de modification du classeur automatiquement ? Dans la feuille de code de l'onglet où tu désires l'information: Private Sub Worksheet_Change(ByVal Target As Range) [A1] = "Date de la dernière modification : " & Date End Sub Le code de ChrisV(ci-dessus) met à jour A1 à chaque changement de valeur de cellule dans la feuille, mais je crois que tu veux cela uniquement au moment de la sauvegarde du classeur : Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean) [A1] = "Date de la dernière modification : " & Date End Sub Benead Ou bien encore: Private Sub Workbook_BeforeClose(Cancel As Boolean) Range("A1").Select 'A1 étant la cellule où le texte s'inscrit. ActiveCell.Value = "Dernière mise à jour le " & Format(Date,"dd/mm/yyyy") End Sub JPS Comment convertir des données en dates ? de Patrick Mac Kay Il s'agit de convertir des données en dates "normales" au départ de la colonne E qui contiendrait qq chose comme "aaaammjj" style 20010501. Sub convertir_dates() Dim tableau As Variant LastrowE = Worksheets(1).Range("E65536").End(xlUp).Row tableau = Range("E1:E" & LastrowE).Value For I = 1 To LastrowE tableau(I, 1) = Left(tableau(I, 1), 4) & "/" & Mid(tableau(I, 1), 4, 2) _ & "/" & Right(tableau(I, 1), 2) LastrowF = LastrowE Next Range("E1:E" & LastrowF).Value = tableau Range("E1:E" & LastrowF).NumberFormat = "dd/mm/yyyy" End Sub Astuce facilitant le report de dates entre classeurs n'utilisant pas le même calendrier ? Une explication détaillée de Michel Gaboly. Installer un chronomètre. Papou 'Pour démarrer le compteur il faut lancer la macro 'DemarreCalculTps 'Pour l 'arrêter il faut exécuter 'ArretCalculTps 'Code à placer dans un module Dim ok As Boolean Sub DemarreCalculTps() ok = True Range("A1").Value = TimeValue("00:00:00") Application.OnTime Now + TimeValue("00:00:01"), "mettre_a_jour" End Sub Sub mettre_a_jour() If ok Then Range("A1").Value = [A1] + TimeSerial(0, 0, 1) Range("A1").NumberFormat = "hh:mm:ss" Application.OnTime Now + TimeValue("00:00:01"), "mettre_a_jour" End If End Sub Sub ArretCalculTps() ok = False End Sub
FICHIER - FEUILLE Comment compter le nombre de feuilles dans un classeur ? Worksheets.Count Comment activer la feuille suivante d'un classeur? Sheets(ActiveSheet.Index + 1).Select Comment copier un classeur complet ? ActiveWorbook.SaveCopyAs "c:\NouveauNom.xls" Comment supprimer tous les fichiers d'un répertoire? Kill "C:\NomRépertoire\*.*" Puis comment supprimer ce répertoire ? RmDir "C:\NomRépertoire" Comment protéger et déprotéger une feuille par mot de passe ? Protéger : ActiveSheet.Protect ("MotDePasse") Déprotéger : ActiveSheet.Unprotect ("MotDePasse") Comment supprimer tous les noms d'une feuille ou d'un classeur ? Dim n as Name For each n in Names n.Delete Next n Comment ignorer les espaces pour transformer les noms de feuilles en hyperliens ? Sub Liste_nom_des_feuilles_en_hyperlinks() Sheets.Add.Name = "Liste feuilles du classeur" Sheets("Liste feuilles du classeur").Move Before:=Sheets(1) Dim MesFeuil As Worksheet Dim x As Integer x = 1 For Each MesFeuil In Worksheets Cells(x, 1).Select ActiveCell = MesFeuil.Name ActiveSheet.Hyperlinks.Add Anchor:=Selection, Address:="", _ SubAddress:="'" & ActiveCell.Value & "'!A1" 'modif 1 'SubAddress:=Chr(39) &ActiveCell.Value & Chr(39) & "!A1" 'modif 2 'SubAddress:=ActiveCell.Value & "!A1" ne marche pas x = x + 1 Next MesFeuil x = 1 End Sub   Comment fermer tous mes classeurs Excel ouverts à l'exception de 3 ?'Mettons que les classeurs à laisser ouverts se nomment "Toto1.xls", '"Toto2.xls" et "Toto3.xls". Dim Wbk As Workbook, Arr Arr = Array("Toto1.xls", "Toto2.xls", "Toto3.xls", ThisWorkbook.Name) For Each Wbk In Workbooks If IsError(Application.Match(Wbk.Name, Arr, 0)) Then Wbk.Close Next Wbk   Est-il possible de partager un classeur et de pouvoir aussi utiliser les macros de ce classeur ?La réponse de Laurent L.   Comment faire faire une rotation à 90° à un tableau Excel, en conservant les formules ?Ces macros, qui seront surtout utiles aux utilisateurs de Word, ont été mises au point par plusieurs personnes, dans lesquelles on trouve: l'irremplacable Laurent (Longre, bien sûr), Isabelle, et surtout Benoît Marchand. Comment connaître la taille en octet du classeur ? MsgBox FileLen(ThisWorkbook.FullName) & " octets"   Sauvegarde automatique de Thomas CorvaisierThomas Corvaisier a écrit une macro qui permet de programmer non pas la sauvegarde automatique du fichier (dangereux), mais de plusieurs versions du fichier sur lequel on travaille, l'intervalle étant programmable, et les versions successives étant conservées, ce qui permet de revenir en arrière. Télécharger sauvage.zip un fichier sauvage.rtf vous explique la marche à suivre! sauvage.zip 46 ko Comment classer les onglets ? http://dj.joss.free.fr/feuil.htm Comment supprimer les feuilles 1, 2 et celle nommée zaza? Sheets(Array(1, 2, "zaza")).Delete Et les feuilles de 10 à 20? sheets(Evaluate("transpose(ROW(10:20))")).delete (par L.L.) Comment empêcher l'affichage de la boite de dialogue "Voulez vous sauvegarder le document?" à la fermeture du fichier? Application.DisplayAlerts = False ActiveWorkbook.Close ou bien ActiveWorkbook.Saved = True ou encore ActiveWorkBook.Close SaveChanges:=False Comment sélectionner les feuilles de l'onglet "Début" à l'onglet "Fin" ? En sachant qu'il peut y avoir 1, 2 ou 3 feuilles ou plus entre ces 2 onglets Sub SelectionFeuilles() Dim Feuille As Worksheet Sheets("Début").Select For Each Feuille In Sheets() If Feuille.Index >= Sheets("Début").Index And _ Feuille.Index <= Sheets("Fin").Index Then _ Feuille.Select Replace:=False Next Feuille End Sub Comment se débarrasser d'un fichier? 3 méthodes utiles Une page pour les 3 méthodes. Comment supprimer tous les noms définis qui contiennent "Fact"? Daniel.J En utilisant l'opérateur Like associé à l'instruction Option Compare en début de code ! Option Compare Text Sub delNomFact() For Each namFact In ActiveWorkbook.Names If namFact.Name Like "*Fact*" Then namFact.Delete End If Next namFact End Sub "Option Compare Text" pour ne pas tenir compte de la casse: Fact est = à fact "Option Compare Binary" pour tenir compte de la casse: Fact n'est pas = à fact Comment avoir le nom du serveur ? Laurent DAURES Pour avoir le nom du serveur, mettre cette macro dans un classeur, enregistrer ce classeur sur le serveur dans le répertoire choisi. et enfin activer cette macro. Sub serveur() Range("a1") = ThisWorkbook.Path End Sub Le chemin s'inscrira dans la cellule A1. Comment zipper des fichiers automatiquement? Sébastien KRECKE Une page "Compression avec winzip". Comment récuperer des données d'un classeur fermé? Récupération de données dans un classeur fermé (méthode "classique" par établissement d'une liaison temporaire) (c'est aussi la technique habituellement conseillée pour essayer de récupérer des données d'un classeur endommagé) Fréderic S. Sub test() GetValuesFromAClosedWorkbook "D:", "TestADO.xls", "Feuil1", "A1:H25" End Sub Sub GetValuesFromAClosedWorkbook(fPath As String, _ fName As String, sName, cellRange As String) 'Ron De Bruin, mpep 'le paramètre 'cellRange' doit désigner '*une* plage de cellules *contigües* With ActiveSheet.Range(cellRange) .Formula = "='" & fPath & "\[" & fName & "]" _ & sName & "'!" & cellRange .Value = .Value End With End Sub Comment déplacer un fichier? Une page "Deplacement de fichier". Comment fermer un classeur Excel après 15 minutes d'inactivité? Une page "Comment fermer un classeur Excel après 15 minutes d'inactivité?".
GRAPHIQUES
Comment faire pour juxtaposer un histogramme avec une ligne horizontale
Les droites de régression de Serge Garneau
Un document pouvant intéresser les profs de stats de Serge Garneau
Comment tracer une ellipse ? (Graphique animé de Serge)
Une enigme et une animation astronomique de Serge
Triangle de Pascal à la sauce fractale de Serge Garneau
Patente triangulaire avec coordonnées 3D quelconques.
de Serge Garneau
Un peu d'arpentage... de Serge Garneau
Graphique à données variables... de Daniel.J
Planche de Galton....pour épater !!! de Serge Garneau (Réussi... :O) Dj)
Graphique et calcul intégral de Serge Garneau
Créer des courbes le plus facilement du monde de Serge Garneau
Compilations de notes avec affichage des maudites étiquettes de Serge Garneau
Ce document permet de miser sur les résultats d'une élection de Serge Garneau
Délire pour les matheux et les profs de math. de Serge Garneau
Introduction aux applications possibles d'Excel pour le calcul
différentiel et intégral de Serge Garneau Comment récupérer le nom de l'imprimante active? Sub ActivePrinter() ActiveCell(2).Select ActiveCell = Application.ActivePrinter End Sub Comment imprimer le fond de page ? Sub ImpFiligrane() 'La Zone d'impression DOIT être préalablement définie Dim ZoneImpr As Range Set ZoneImpr = Range(ActiveSheet.PageSetup.PrintArea) ZoneImpr.CopyPicture xlScreen, xlBitmap ActiveSheet.Paste Destination:=ZoneImpr ActiveWindow.SelectedSheets.PrintPreview ActiveSheet.Shapes(ActiveSheet.Shapes.Count).Delete End Sub Denny Campbell Comment imprimer des plages discontinues? Sélectionner les plages avec la touche CTRL dans la boîte de saisie Sub ImpressionZonesDiscontinues() Dim maplage As Range, mazone As Range Dim i As Integer With Application .DisplayAlerts = False Set maplage = .InputBox(prompt:="Selectionnez la plage à imprimer.", _ Type:=8) .ScreenUpdating = False Worksheets.Add End With With ActiveSheet For Each mazone In maplage.Areas mazone.Copy Cells(Range("A1").SpecialCells(xlLastCell).Row + X, 1).Select X = 1 .Paste Next .PrintPreview .Delete End With End Sub
OUTIL Comment ajouter une fonction au petit menu de la barre d'état (en bas à droite qui s'affiche sur un clique droit)? http://dj.joss.free.fr/outil.htm#menubarreEtat Comment créer une entrée "Ouvrir avec XL 97" dans le menu contextuel Windows? Sur un poste où XL97 et XL2000 sont installés, avec XL2000 associé par défaut. Marche pour Win 98 et Win Me (les autres à voir) Dans Regedit HKEY_CLASSES_ROOT\Excel.Sheet.8\shell Créer une nouvelle clé \Ouvrir_avec Excel_97 et lui donner comme valeur par défaut : Ouvrir avec Excel 97 Sous cette nouvelle clé, en créer et modifier deux : \Command (défaut)= " ...lecheminExcel97\Excel.exe" /e \ddeexec (défaut)= [Open("%1")] Et sous cette clé ddeexec, en créer et modifier deux : \Application (défaut)= Excel \Topic (défaut)= System Bouton1 et CommandButton1: DIFFERENCE La réponse de Catherine Minimiser toutes les fenêtres Permet de minimiser toutes les fenêtres, comme la combinaison de la touche windows & de M. Pratique pour les vieux claviers sans touche windows. Private Declare Sub keybd_event Lib "user32" _ (ByVal bVk As Byte, _ ByVal bScan As Byte, _ ByVal dwFlags As Long, _ ByVal dwExtraInfo As Long) Private Const VK_LWIN = &H5B Private Const KEYEVENTF_KEYUP = &H2 Sub MinimizeWindows() VK_ACTION = &H4D Call keybd_event(VK_LWIN, 0, 0, 0) Call keybd_event(VK_ACTION, 0, 0, 0) Call keybd_event(VK_LWIN, 0, KEYEVENTF_KEYUP, 0) End Sub Comment désinstaller Excel ou un autre logiciel d'Office proprement? Ces programmes sont très utiles pour faire une réinstallation vraiment "propre" d'Office, en cas par exemple de plantages systématiques d'Excel à cause d'un fichier système corrompu. Et si on n'a plus besoin d'Office, c'est idéal pour récupérer de l'espace disque. J'ai dû utiliser récemment les deux Eraser d'Office 2000, après désinstallation, et ils ont supprimé environ 45 Mo de fichiers résiduels sur le disque dur. No comment... Laurent Un utilitaire de nettoyage des résidus laissés par Office 97 sur le disque dur et dans la base de registres, téléchargeable sur: http://support.microsoft.com/support/kb/articles/q176/8/23.asp Un utilitaire équivalent existe pour Office 2000 : Pour le CD 1 (Eraser2k.exe) http://support.microsoft.com/support/kb/articles/Q239/9/38.asp Pour le CD 2 (Erasecd2.exe) http://support.microsoft.com/support/kb/articles/q247/6/74.asp Une série de boutons "exemples" dans une barre d'outil http://dj.joss.free.fr/outil.htm#seriebts Comment insérer un module et construire une macro dans ce module? et comment tester l'existence d'une macro? Une page complète sur le sujet. Comment créer un bouton et y affecter une macro? Sub CréerBouton() 'Défini l'emplacement et la taille du bouton ActiveSheet.Buttons.Add(60, 0, 60, 12.75).Select Selection.OnAction = "AffecterMaMacro" Selection.Characters.Text = "Mon bouton" With Selection.Characters(Start:=1, Length:=6).Font .Name = "Arial" .FontStyle = "Normal" .Size = 10 .Strikethrough = False .Superscript = False .Subscript = False .OutlineFont = False .Shadow = False .Underline = xlNone .ColorIndex = xlAutomatic End With Range("A1").Select End Sub Comment créer un raccourci Internet par VBA? Raccourci sur le bureau : Sub raccourcis_bureau() chemin = "c:\windows\all users\bureau\" Open chemin & "boursorama.url" For Output As #1 Print #1, "[InternetShortcut]" Print #1, Chr$(10) & "URL=http://boursorama.fr" Print #1, Chr$(10) & "IconIndex = 14" Print #1, Chr$(10) & "IconFile=C:\WINDOWS\Moricons.dll" Close #1 End Sub Il suffit de remplacer le chemin d'accès au bureau par celui de la barre Office pour créer un raccourci sur la barre Office: Sub raccourcis_Office() chemin = "C:\Program Files\Microsoft Office\Office\gestionnaire office\office\" Open chemin & "boursorama.url" For Output As #1 Print #1, "[InternetShortcut]" Print #1, Chr$(10) & "URL=http://boursorama.fr" Print #1, Chr$(10) & "IconIndex = 5" Print #1, Chr$(10) & "IconFile=C:\WINDOWS\Moricons.dll" Close #1 End Sub http://jacxl.free.fr/cours_xl/cadres.html Rubrique: UTILE Créer un raccourci Internet par VBA Comment créer un raccourci d'un fichier xls sur le bureau par VBA? Declare Function SHGetSpecialFolderLocation Lib "Shell32" _ (ByVal hwnd As Long, ByVal nFolder As Long, ppidl As Long) As Long Declare Function SHGetPathFromIDList Lib "Shell32" _ (ByVal Pidl As Long, ByVal pszPath As String) As Long Declare Function SetWindowPos Lib "User32" _ (ByVal hwnd As Long, ByVal hWndInsertAfter As Long, _ ByVal X As Long, ByVal Y As Long, ByVal cx As Long, _ ByVal cy As Long, ByVal uFlags As Long) As Long Declare Function SetForegroundWindow Lib "User32" _ (ByVal hwnd As Long) As Long Declare Function GetForegroundWindow Lib "User32" () As Long '================================Laurent Function RaccourciBureau(Fichier As String) As Boolean Dim hwnd As Long Dim Pidl As Long Dim Bureau As String If Dir(Fichier) = "" Then Exit Function SHGetSpecialFolderLocation 0, 0, Pidl Bureau = Space(260) SHGetPathFromIDList Pidl, Bureau Bureau = Left(Bureau, InStr(1, Bureau, vbNullChar) - 1) hwnd = GetForegroundWindow SetWindowPos hwnd, -1, 0, 0, 0, 0, 3 Shell "RunDLL32 AppWiz.Cpl,NewLinkHere " & Bureau & "\" SendKeys """" & Fichier & """~~", True SetForegroundWindow hwnd RaccourciBureau = True End Function Sub CreeRaccourci() 'modifier le chemin et le nom de fichier MsgBox IIf(RaccourciBureau("C:\ajeter\test.xls"), _ "Raccourci créé", "Fichier inexistant") End Sub Comment lister les polices? 4 macros au choix ! Comment supprimer la barre de tâche Windows? Tester avec Office 2000/Win98 et Office XP/WinXP Option Explicit Dim handleW1 As Long Private Declare Function FindWindowA Lib "user32" _ (ByVal lpClassName As String, _ ByVal lpWindowName As String) As Long Private Declare Function SetWindowPos Lib "user32" _ (ByVal handleW1 As Long, _ ByVal handleW1InsertWhere As Long, ByVal w As Long, _ ByVal x As Long, ByVal y As Long, ByVal z As Long, _ ByVal wFlags As Long) As Long Const TOGGLE_HIDEWINDOW = &H80 Const TOGGLE_UNHIDEWINDOW = &H40 Function HideTaskbar() handleW1 = FindWindowA("Shell_traywnd", "") Call SetWindowPos(handleW1, 0, 0, 0, 0, 0, TOGGLE_HIDEWINDOW) End Function Function UnhideTaskbar() Call SetWindowPos(handleW1, 0, 0, 0, 0, 0, TOGGLE_UNHIDEWINDOW) End Function Pour supprimer la barre des tâches : Taper la commande Print HideTaskbar() dans la Fenêtre Exécution puis appuyez sur ENTRÉE. Pour restaurer la barre des tâches: Tapez la commande Print UnhideTaskbar() dans la Fenêtre Exécution puis appuyez sur ENTRÉE. Comment exécuter une macro dont le nom est dans une cellule? Sub Test() Reponse = MsgBox("Fonction test") End Sub Sub CallSub() Dim Appel As String Appel = ActiveCell.Value 'Nous pouvons y ajouter des paramètres.... Application.Run (ActiveCell.Value) End Sub Ajouter une touche de raccourci (par exemple Ctrl+S) appelant la macro CallSub. Puis, aprés avoir saisi dans une cellule la valeur Test, qui est le nom de la procédure à appeler, presser CTRL+S, et vous pouvez voir le Message "Function test" apparaître. Eric Wanono Comment exécuter 2 actions sur un même bouton par alternance? Daniel.j btbascule.zip 8 ko Comment réorganiser les fenêtres de l'éditeur VB? Ils nous arrivent parfois de bousculer l'organisation des fenêtres de l'Editeur Visual Basic ! Voilà une méthode simple pour retrouver l'organisation par défaut Il faut supprimer (ou renommer) la valeur "Dock" de cette clé de la base de registre Elle sera recréée automatiquement au prochain démarrage d'Excel et les fenêtres de VBE reprendront leur état d'origine. Pour Windows 98 HKEY_USERS\.Default\Software\Microsoft\VBA\Office Pour Windows XP HKEY_USERS\S-1-5-21-1957994488-492894223-839522115-1003\Software\Microsoft\VBA\6.0\Common Comment protéger un classeur à l'ouverture? Avec XL 2000 Fichier => Enregistrer sous => Cliquer sur Outils et Options générales / Options d'enregistrement et mot de passe Avec XL 97 Fichier => Enregistrer sous => Options et mot de passe Un menu entièrement paramètrable à partir d'une feuille de calcul ! John Walkenbach menumakr.zip 16 ko
USERFORM Comment empêcher la fermeture d'un userform avec la croix? Private Sub UserForm_QueryClose(Cancel As Integer, CloseMode As Integer) If CloseMode = 0 Then Cancel = True End Sub Ou encore, de LL Private Declare Function GetWindowLongA Lib "User32" _ (ByVal hWnd As Long, ByVal nIndex As Long) As Long Private Declare Function SetWindowLongA Lib "User32" _ (ByVal hWnd As Long, ByVal nIndex As Long, _ ByVal dwNewLong As Long) As Long Private Declare Function FindWindowA Lib "User32" _ (ByVal lpClassName As String, ByVal lpWindowName As String) As Long Private Sub UserForm_Initialize() Dim hWnd As Long hWnd = FindWindowA("Thunder" & IIf(Application.Version Like "8*", _ "X", "D") & "Frame", Me.Caption) SetWindowLongA hWnd, -16, GetWindowLongA(hWnd, -16) And &HFFF7FFFF End Sub Pourquoi mettre Load UserForm1 avant la commande
UserForm1.Show? Comment installer une barre de progression lors de l'exécution d'une macro? Télécharger le classeur "progress.zip" Rubrique téléchargement. Comment imprimer une Userform telle qu'elle apparaît à l'écran? Placez un bouton dans l'userform et dans le code mettez: Private Sub CommandButton1_Click() UserForm1.PrintForm End Sub Comment insérer un gif animé dans un Userform ? Ajouter à la boite à outils le contrôle "Navigateur Web Microsoft". Placer ce contrôle sur un UserForm. Dans l'événement Initialize du UserForm, placer le code suivant : Private Sub UserForm_Initialize() WebBrowser1.Navigate _ "about:<html><body scroll='no'>" & _ "<img src='D:\images\envelope.gif'></img></body></html>" End Sub Le petit bout de code HTML evite l'affichage par défaut d'une barre de défilement à droite du contrôle. Ce code vient de cette adresse: http://support.microsoft.com/default.aspx?scid=http://msdn.microsoft.com/vbasic/technical/00pasttips.asp#4-10-00 Comment récupérer la première ligne de texte d'une zone de texte ? MichDenis Placez une zone de texte dans la feuille 1 et tapez au moins 2 lignes de texte: Sub recup() Dim T As String, A As Integer, B As String T = Worksheets("Feuil2").Shapes("Zone de texte 1").TextFrame.Characters.Text A = InStr(1, T, Chr(10), vbTextCompare) B = Left(T, A - 1) MsgBox B End Sub Comment faire pour activer un userform et avoir accès aux feuilles de calcul? Dans les propriétes de l'userform: Comportement=>ShowModal mettre la propriété à "False" Attaquer un objet par son nom - John Fuss Ayant trouvé pas mal de posts traitant de ce problème sur le net (sans le solutionner), je me permet de publier une petite fonction qui permet d'attaquer un objet par une variable, qui le nomme par son contenant. Exemple : mise à jour de 30 boutons : Public Function CtrlByName(frm As UserForm, ctrl As String) As Object On Error Resume Next Set CtrlByName = frm.Controls(ctrl) End Function Public sub MAJ_Boutons(texte as string) dim i as integer for i = 1 to 30 CtrlByName(UserForm1, "bt_action" & i).caption = "Bouton n°" & i next End sub
EXCEL ET LES AUTRES Est-il possible d'utiliser les fonctions Excel tel que loi.student.inversé(i,j) sur ACCESS ? Oui, en utilisant à partir d'Access la bibliothèque d'objets d'Excel. Dans ton projet VBA, il faut que tu ajoutes une référence à cette bibliothèque par: Outils -> Références -> "Microsoft Excel 9.0 (ou 8.0) Object Library". Exemple de code : With New Excel.Application ' affiche le résultat de LOI.STUDENT.INVERSE(0,5;19) MsgBox .WorksheetFunction.TInv(0.5, 19) .Quit End With Si les fonctions d'Excel doivent être périodiquement rappelées par ta macro, il vaut mieux laisser l'instance d'Excel ouverte en permanence, et ne la refermer que quand ta macro n'en a plus besoin: 'Avec ======== Dim XL As Excel.Application Sub OuvreXL() Set XL = New Excel.Application End Sub Sub QuitteXL() XL.Quit Set XL = Nothing End Sub Sub Exemple() If XL Is Nothing Then OuvreXL MsgBox XL.WorksheetFunction.TInv(0.5, 19) If MsgBox("Continuer à utiliser les fonctions XL ?", vbYesNo) = _ vbNo Then QuitteXL End Sub Avantage : comme Excel est déjà ouvert, la fonction est appelée plus vite. Inconvénient: l'instance d'Excel ouverte consomme des ressources en mémoire vive. Laurent L. Infos sur PHP et Excel http://dj.joss.free.fr/php.htm Fichiers Multiplan et Excel Pour pouvoir relire des anciens fichiers Multiplan il faut avoir Excel 95 qui, seul possède le convertisseur adéquat. (A installer, depuis le menu Composants du CD d'installation.) Comment copier des données excel dans word? Lydya Dans la première, tu précises toi-même la plage à copier (ici A1:G10) Sub CopieExcelWord() Dim PlageACopier As Range Dim AppWord As Object Set PlageACopier = Sheets("NomFeuille").Range("A1:G10") Set AppWord = CreateObject("Word.Application") PlageACopier.Copy With AppWord .Visible = True .documents.Open FileName:="C:\Temp\DocAOuvrir.doc" .Selection.Paste End With ActiveWorkbook.Save Application.Quit End Sub Dans la deuxième Copie la plage de A1 jusqu'à la dernière colonne & dernière ligne contenant des données de la feuille NomFeuille et la colle dans le document Word "C:\DocAOuvrir.doc" Sub CopiePlageDonneesExcelDansWord() Dim PlageACopier As Range Dim NbLignes As Long Dim NbCols As Integer Dim AppWord As Object Application.ScreenUpdating = False Sheets("NomFeuille").Activate If WorksheetFunction.CountA(Cells) > 0 Then NbLignes = Cells.Find("*", [A1], , , xlByRows, xlPrevious).Row NbCols = Cells.Find("*", [A1], , , xlByColumns, xlPrevious).Column Else MsgBox "La feuille ne contient pas de données" Exit Sub End If Set PlageACopier = Range(Cells(1, 1), Cells(NbLignes, NbCols)) PlageACopier.Copy Set AppWord = CreateObject("Word.Application") With AppWord .Visible = True .documents.Open FileName:="C:\DocAOuvrir.doc" .Selection.Paste End With ActiveWorkbook.Save Application.ScreenUpdating = True Application.Quit End Sub Comment récupérer les attributs de MP3 ?(Avec XP) Publié par Michel Pierron. Option Explicit Sub MP3_Listing() Dim sPath As String: sPath = GetShellFolder If sPath = "" Then Exit Sub If Dir(sPath, vbDirectory) = "" Then Exit Sub Dim Headers(35), x%, y&, i&, p$, n$, oFile As Object Dim objShell As Object, oFolder As Object Set objShell = CreateObject("Shell.Application") Set oFolder = objShell.Namespace(CStr(sPath)) Application.ScreenUpdating = False Workbooks.Add For i = 0 To 34 Headers(i) = oFolder.GetDetailsOf(oFolder.Items, i) Select Case i Case 0 To 1, 10, 12, 14 To 18, 20 To 22 x = x + 1 Cells(1, x) = Headers(i) End Select Next y = 1 For Each oFile In oFolder.Items p = oFile.Path: n = oFile.Name If Right$(n, 4) = ".mp3" Then x = 0: y = y + 1 For i = 0 To 34 Select Case i Case 0 To 1, 10, 12, 14 To 18, 20 To 22 x = x + 1 Cells(y, x) = oFolder.GetDetailsOf(oFile, i) With ActiveSheet .Hyperlinks.Add .Range("A" & y), Hlink(p), , n, n End With End Select Next End If Next Range("A2").Select ActiveWindow.FreezePanes = True Rows("1:1").Font.Bold = True Cells.Columns.AutoFit Range("A1").Select Set oFolder = Nothing: Set objShell = Nothing End Sub Private Function GetShellFolder() As String Const Title = "Sélectionnez un répertoire !" Dim oSHA As Object, oSF As Object, oItem As Object On Error GoTo 1 Set oSHA = CreateObject("Shell.Application") Set oSF = oSHA.BrowseForFolder(0, Title, &H1 Or &H10, &H11) If InStr(TypeName(oSF), "Folder") <> 1 Then Exit Function For Each oItem In oSF.parentfolder.Items If oItem.Name = oSF.Title Then GetShellFolder = oItem.Path Exit Function End If Next GetShellFolder = oSF.Title Set oSF = Nothing: Set oSHA = Nothing Exit Function 1: MsgBox "Error: " & Err.Number & vbLf & Err.Description, 48 End Function Private Function Hlink(p As String) As String Hlink = "file:///" & Replace(Replace(p, " ", "%20"), "\", "/") End Function
Et le MAC Conseils pour passer un programme VBA de PC vers MAC de Bernard Rey Faire cohabiter Excel et AppleScript de Bernard Rey
TELECHARGEMENT Ouvrir la page des téléchargements.
Liens Les liens de Laurent.(Ils sont vérifiés et mis à jour systématiquent toutes les 3 semaines !). Les pages de Daniel.J en plus de la FAQ Les liens de Nicolas alias FRIPOUILLOT. Le programme Microsoft MVP – Most Valuable Professional Trucs et Astuces - Surtout Excel 2000 Patch SR-1 Office 2000. Exercices, corrections & commentaires par JMS
Les Pages de Flo (Misange...) et les Photos MPFE
Le site de J@C
Frédéric Sigonneau - "...aux choses du temps..." Gestions de temps
Le site de Bruno-BDF
Utilitaires Euro
Site perso de Christian Herbé.(Port série, Userform, Graphique) "Cartographiez" vos tableaux de chiffres ! de Gaetan Mourmant. Excel Downloads VULNERABILITE EXCEL ET POWERPOINT (WINDOWS ET MAC)
Coin du lecteur
Excel 2002
- Excel 2002 VBA Etape par étape dans la collection "Microsoft Press"
- Microsoft Excel version 2002 Au Quotidien
dans la collection "Microsoft Press"
- L'Essentiel Microsoft Excel Version 2002
dans la collection "Microsoft Press" Pour débuter. - Macros et Visual Basic. Excel 97 dans la collection "Formation rapide" - Microsoft Excel97 Visual Basic Etapes par Etapes Bibliographie de Fripouillot. - EXCEL 2000 ET VBA6, aux éditions CAMPUPRESS, de Mikael Bidault (169 F - 25,76 euros), il - EXCEL 2000 ET VBA Le Guide du Programmeur, de John Walkenbach, aux - VBA EXCEL 2000, aux éditions ENI (148 F - 22,56 euros). Il donne la liste de quasiment - EXCEL 2000 VBA Etapes par étapes, aux éditions MICROSOFT PRESS. Je ne peux - EXCEL 2000 VBA PROGRAMMER'S REFERENCE, de John Green, aux éditions WROX - FORMULES ET FONCTIONS EXCEL 2000, de John Walkenbach, aux éditions FIRST - autrement sur EXCEL 97, tu as EXCEL 97 LA BIBLE, aux éditions MICRO - un petit peu hors-sujet mais très intéressant : MICROSOFT OFFICE 97 Manuel Ou encore. -VBA pour Excel 2000 - Pour les Nuls, de John Walkenbach. Et puis: -CD DE FORMATION - EXCEL AVANCÉ PAR L’ANIMATION
de Gaetan Mourmant Glossaire
Les Souriettes d'Isabelle Voir les Souriettes ou smileys Rédacteurs Daniel Josserand
Nicolas alias "Fripouillot" - Auteur de la Netiquette du Forum MPFE. Utilisation de cette FAQ Remerciements Création de la FAQ : 13 septembre 2000 |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Conception & Réalisation Daniel Josserand . Novembre 2000 Optimisé pour un écran 17" en 1024/768 |