Base de connaissances CCM
Bureautique - Microsoft Office - Excel




Sujet 962 - [Excel] Chemin et nom de stockage de feuille de calcul

[ Voir ce sujet en ligne ] - [ Catégorie: Bureautique - Microsoft Office - Excel ]

Indiquer automatiquement le chemin d'accès (path) et le nom de stockage de toute feuille de calcul

Noter dans une cellule (A& par exemple) la formule :

=cellule("nomfichier";A1)



A chaque sauvegarde et/ou déplacement de fichier dans votre ordinateur (ou un autre), cette formule indiquera le chemin complet, nom de fichier et nom de feuille de votre feuille.

Si vous incluez cette ligne dans les lignes à répéter dans vos paramètres d'impression, vous n'aurez plus de problèmes pour retrouver la version numérique d'une impression, même de longs mois après son enregistrement !

Lire la suite

Eviter les doublons dans Excel »
Publié par megajojo - Dernière mise à jour le 12 novembre 2009 à 14:43 par marlalapocket




Sujet 1258 - Eviter les doublons dans Excel

[ Voir ce sujet en ligne ] - [ Catégorie: Bureautique - Microsoft Office - Excel ]

Eviter les doublons lors d'un encodage dans un colonne de feuille excel:

Les 2 doublons seront alors repérés rapidement par une mis en couleur du fond.

Patrick

exemple sur demande ICI

Lire la suite

[Excel] Trier sur les lignes (horizontalement), non les colonnes »
Publié par patrick - Dernière mise à jour le 10 avril 2010 à 15:54 par pintuda




Sujet 2630 - [Excel] Trier sur les lignes (horizontalement), non les colonnes

[ Voir ce sujet en ligne ] - [ Catégorie: Bureautique - Microsoft Office - Excel ]



Microsoft Excel est configuré par défaut pour réaliser un tri sur les colonnes (Données / Trier).

Pour trier les données horizontalement, il suffit de sélectionner les données à trier, puis de cliquer sur le bouton Options et, dans le panneau "Orientation" de spécifier "De la gauche vers la droite" !

Lire la suite

[Excel] Ajouter une date fixe dans une cellule »
Publié par Jeff - Dernière mise à jour le 22 septembre 2009 à 10:29 par irongege




Sujet 3757 - [Excel] Ajouter une date fixe dans une cellule

[ Voir ce sujet en ligne ] - [ Catégorie: Bureautique - Microsoft Office - Excel ]

Si vous souhaitez insérer la date du jour en cours dans une cellule, au format JJ/MM/AAAA, et que celle-ci reste fixe, sans remise à jour à chaque ouverture du fichier (par exemple pour indiquer la date de création du fichier):
Dans les même conditions, si vous souhaitez insérer l'heure au format HH:MM:

Lire la suite

[Excel] Colorer des cellules sur conditions »
Publié par Furtif - Dernière mise à jour le 13 novembre 2009 à 13:29 par marlalapocket




Sujet 3975 - [Excel] Colorer des cellules sur conditions

[ Voir ce sujet en ligne ] - [ Catégorie: Bureautique - Microsoft Office - Excel ]

Il existe dans Excel des fonctions très pratiques mais peu connues et peu utilisées.

Exemple : vous souhaitez qu'une cellule se colore automatiquement en rouge (ou autre mise en forme de police, de bordure, de trame) selon une condition : un résultat, un dépassement de seuil ou autre.

Expérimentez :

Format > Mise en forme conditionnelle... (c'est une fonction pleine de ressources).

Ainsi, vous pouvez :

Lire la suite

[Excel] Restreindre l'accès aux cellules »
Publié par Furtif - Dernière mise à jour le 12 novembre 2009 à 12:57 par marlalapocket




Sujet 3976 - [Excel] Restreindre l'accès aux cellules

[ Voir ce sujet en ligne ] - [ Catégorie: Bureautique - Microsoft Office - Excel ]

Encore une fonction peu connue :

Expérimentez : Données / Validation

Vous pouvez alors restreindre ou interdire l'accès aux "cellules stratégiques" de votre choix, avec message d'alerte.

Vous pouvez faire afficher automatiquement des messages d'alertes Windows sur conditions ou selon un résultat de formules prises dans la bibliothèque Excel.

Un exemple :
Vous voulez limiter la saisie dans une cellule (ou un groupe de cellules) à un nombre entier compris entre 2 valeurs (ex : 1 et 10)

Vous faites :

Validez. Cette cellule n'acceptera désormais que des nombres entiers compris entre 1 et 10, et rejettera toute saisie non conforme en vous affichant un message Windows.

Lire la suite

Transformer couleur en valeur numérique »
Publié par Furtif - Dernière mise à jour le 12 novembre 2009 à 13:23 par marlalapocket




Sujet 7108 - Transformer couleur en valeur numérique

[ Voir ce sujet en ligne ] - [ Catégorie: Bureautique - Microsoft Office - Excel ]

Cette macro permet d'obtenir le code d'une couleur, pour traitement ultérieur selon votre besoin
Sub distri_couleur()
  Dim i
  For i = 1 To 12
    Worksheets(1).Range("C" & i).Value = Worksheets(1).Range("B" & i).Interior.Color
  Next i
End Sub
'Remplacer le 10 par le nombre de lignes que vous souhaitez traiter.
'Remplacer le "I" par la colonne que vous souhaitez utiliser pour le résultat (code de couleur).
'Remplacer le "B" par la colonne qui contient les couleurs à filtrer.

Lire la suite

Figer une ligne dans un tableau Excel »
Publié par Furtif - Dernière mise à jour le 12 novembre 2009 à 14:42 par marlalapocket




Sujet 7684 - Figer une ligne dans un tableau Excel

[ Voir ce sujet en ligne ] - [ Catégorie: Bureautique - Microsoft Office - Excel ]

Pour figer la ligne 1 (par exemple) dans une feuille excel :

Lire la suite

Insérer un gif animé dans Excel »
Publié par cusco - Dernière mise à jour le 17 novembre 2009 à 14:39 par marlalapocket




Sujet 8019 - Insérer un gif animé dans Excel

[ Voir ce sujet en ligne ] - [ Catégorie: Bureautique - Microsoft Office - Excel ]

Pour insérer une image gif animée dans un classeur Excel, le réflexe est de faire le menu insertion / image, mais cela ne fonctionne pas. C'est normal car l'animation est faite par plusieurs images et l'importation se limite à la première.

Pour que l'animation fonctionne, il faut insérer l'image dans un Contrôle.
Private Sub Worksheet_Activate()
   WebBrowser1.Navigate "X:\chemin complet de l'image.GIF"
End Sub

   WebBrowser2.Navigate "X:\chemin complet de l'image.GIF"


Si la taille ne cadre pas avec l'image, il faut corriger :

Lire la suite

Mise à jour d'une procèdure ou d'une fonction en VBA »
Publié par gbinforme - Dernière mise à jour le 5 novembre 2009 à 18:04 par marlalapocket




Sujet 8130 - Mise à jour d'une procèdure ou d'une fonction en VBA

[ Voir ce sujet en ligne ] - [ Catégorie: Bureautique - Microsoft Office - Excel ]


Mise à jour d'une procédure ou d'une fonction en VBA


Souvent la gestion d'un classeur, avec seulement les fonctions standards du tableur, pose des problèmes d'utilisation.

Vous songez donc à utiliser Visual Basic pour Applications (VBA) mais vous ne savez pas comment y accéder et donc vous vous privez d'intéressantes fonctionnalités.

Pour gérer vos procédures et fonctions personnalisées, vous devez lancer l'éditeur Visual Basic : pour cela, utilisez le menu Outils / Macro / Visual Basic Editor ou plus simplement la combinaison des touches Alt + F11 simultanément.

Dans la fenêtre qui s'ouvre, alors, vous devez avoir une fenêtre "Projet - VBAProject", si elle n'est pas présente, ouvrez la avec le menu Affichage / Explorateur de projets ou plus simplement Alt + r.

Dans cette fenêtre, vous allez voir votre classeur et pouvoir ouvrir son arborescence qui va se présenter ainsi :

Si vous avez utilisé l'enregistreur de macro pour enregistrer votre procédure, vous allez la trouver dans un module avec le nom que vous lui avez donné.

Si vous voulez introduire une procédure que vous avez obtenue par une recherche Internet ou une aide du forum, vous pouvez la copier dans une des fenêtres qui s'ouvrira en double cliquant sur la ligne adéquate choisie dans l'arborescence.

Pour créer un module ou une procédure, utilisez le menu insertion et le choix adéquat.

Lire la suite

Liste déroulante avec saisie semi automatique pour EXCEL »
Publié par gbinforme - Dernière mise à jour le 16 novembre 2009 à 12:57 par marlalapocket




Sujet 8288 - Liste déroulante avec saisie semi automatique pour EXCEL

[ Voir ce sujet en ligne ] - [ Catégorie: Bureautique - Microsoft Office - Excel ]

« PrécédentSuivant »
Sommaire
C'est une procédure qui demande un investissement personnel et qui n'est pas nécessairement facile à comprendre et à réaliser dès la première fois.

Afin de rendre cette astuce facile à utiliser, nous allons employer les plages et les formules nommées car ainsi elles sont indépendantes de la structure du classeur.

Pour l'illustrer, nous allons prendre par exemple la saisie des départements français, des cantons suisses ou des provinces canadiennes.


Maintenant, si avant de cliquer sur la flèche, nous saisissons "t" seuls les noms commençant par "T" nous sont proposés.
Lorsque la liste est conséquente, l'on peut saisir plusieurs caractères et seuls les éléments de la liste commençant par la saisie seront proposés.

Bien sûr les noms de liste proposés peuvent être modifiés à votre guise et vous pouvez avoir plusieurs listes dans le même classeur. L'utilisation de la nomenclature est surtout faite pour faciliter la compréhension d'une technique que beaucoup ont du mal à intégrer.

Nous vous souhaitons une bonne utilisation de cette procédure et si vous avez des soucis de prise en main, faites le savoir pour pouvoir améliorer le texte.
Publié par gbinforme - Dernière mise à jour le 11 avril 2011 à 23:35 par gbinforme
Ce document intitulé « Liste déroulante avec saisie semi automatique pour EXCEL » issu de CommentCaMarche.net (CCM) (www.commentcamarche.net) est mis à disposition sous les termes de la licence Creative Commons. Vous pouvez copier, modifier des copies de cette page, dans les conditions fixées par la licence, tant que cette note apparaît clairement.




Sujet 8450 - Formules Excel de base

[ Voir ce sujet en ligne ] - [ Catégorie: Bureautique - Microsoft Office - Excel ]

Voici quelques formules de bases qui sont faciles à réaliser et qui peuvent donner un peu de vie à une feuille Excel !

Pour cette astuce, on supposera que l’on veut que le résultat s’affiche dans la cellule B10 et on se servira principalement des cellules allant de A1 à A10.

Formules de base :


Ce sont les formules les plus simples à faire. Si les cellules à utiliser sont éparpillées dans la feuille, on peut les sélectionner par exemple de cette manière :
=somme(A1; A3 ; C4)

Fonction SI :


La fonction SI est aussi intéressante :
=SI(condition ; valeur "si vrai" ; valeur "sinon")
Exemple :
=si(A1<=0 ; « à commander » ; « en stock »)
Ce qui donnerait en language courant : Si le contenu de la cellule A1 est inférieur ou égal à zéro, alors on affiche "à commander", sinon (si le contenu de la cellule A1 est supérieur à zéro) on affiche "en stock".

Immobiliser une cellule :


Une fois la cellule écrite, appuyer sur F4 pour voir apparaître les coordonnées de la cellule avec des dollars.

Lire la suite

Les fonctions Ligne, Lignes, Colonne, Colonnes »
Publié par dogfriend - Dernière mise à jour le 17 novembre 2009 à 14:41 par marlalapocket




Sujet 8646 - Les fonctions Ligne, Lignes, Colonne, Colonnes

[ Voir ce sujet en ligne ] - [ Catégorie: Bureautique - Microsoft Office - Excel ]

Vous avez un tableau et vous l'avez nommé NomTableau (par exemple) avec :

INSERTION / NOM / DEFINIR ..... cocher les cases du tableau et nommer le tableau NomTableau (par exemple)

Dans ce tableau, vous voulez connaitre, quelque soit son emplacement, et même si vous le déplacez par la suite :
- le N° de ligne de la 1ère ligne du tableau : =LIGNE(NomTableau)
- le N° de colonne de la 1ère colonne du tableau : =COLONNE(NomTableau)
- le Nombre de lignes du tableau NomTableau : = LIGNES(NomTableau)
- le Nombre de colonnes du tableau NomTableau : = COLONNES(NomTableau)

Lire la suite

Travailler sur les dates avec Excel »
Publié par Furtif - Dernière mise à jour le 17 novembre 2009 à 14:41 par marlalapocket




Sujet 8647 - Travailler sur les dates avec Excel

[ Voir ce sujet en ligne ] - [ Catégorie: Bureautique - Microsoft Office - Excel ]

Vous avez une date en C3 par exemple, et vous voulez connaitre :
Nota : 2 correspond à un système de semaines commençant le Lundi, et 1 pour le Dimanche.
Nota : 0 pour la fin du mois désigné.
1 pour la fin du mois suivant
2 pour la fin du mois d'aprés
etc ....

trés utile dans une formule de paiement à X mois aprés la date de facture.
Nota :
A1 pour la date de début ;
A2 pour la date de fin ;
A3:A6 pour une liste de jours fériés.

Lire la suite

Remplir une ligne ou une colonne avec une suite logique »
Publié par Furtif - Dernière mise à jour le 17 novembre 2009 à 13:56 par marlalapocket




Sujet 8654 - Remplir une ligne ou une colonne avec une suite logique

[ Voir ce sujet en ligne ] - [ Catégorie: Bureautique - Microsoft Office - Excel ]

Vous devez créer un tableau avec le nom des mois dans une ligne ou une colonne :

- vous inscrivez au moins 2 mois consécutifs : par exemple, janvier en B4 et février en B5
- vous pointez sur B4, puis en maintenant shift enfoncé, vous pointez B5.
- les 2 cellules sont cochées et un petit carré apparait en bas de B5, à droite
- vous clickez et tenez sur ce carré, et déplaçant votre souris (le pointeur est devenu une croix) sur les cellules suivantes
- elles se remplissent automatiquement suivant la suite logique des mois

Vous pouvez également le faire en colonne .... même procédure.

Si vous le faites avec des chiffres :
- ex : 1 puis 2, la suite sera 3,4,5, etc...
- ex : 1 puis 3, la suite sera 3,5,7, etc...

Si vous combinez :
- ex : Valeur 1, puis Valeur 2, la suite sera Valeur 3, Valeur 4, etc...

Vous pouvez créer le format de vos propres suites logiques :
- OUTILS / OPTIONS / LISTES PERSONNELLES

Lire la suite

Insérer une image de fond sous la grille Excel »
Publié par Furtif - Dernière mise à jour le 17 novembre 2009 à 14:40 par marlalapocket




Sujet 8657 - Insérer une image de fond sous la grille Excel

[ Voir ce sujet en ligne ] - [ Catégorie: Bureautique - Microsoft Office - Excel ]

Vous souhaitez insérer un logo sous JPEG ou autre, sous votre grille Excel :

FORMAT / FEUILLE / ARRIERE PLAN
s'ouvre un panneau vous présentant vos images pour sélection.... choisissez, validez.

Pour le supprimer :
même procédure FORMAT / FEUILLE / Supprimer l'arrière plan

Lire la suite

Mettre en forme les commentaires Excel »
Publié par Furtif - Dernière mise à jour le 17 novembre 2009 à 14:40 par marlalapocket




Sujet 8660 - Mettre en forme les commentaires Excel

[ Voir ce sujet en ligne ] - [ Catégorie: Bureautique - Microsoft Office - Excel ]


Mettre en forme les commentaires Excel


Vous souhaitez associer un commentaire explicatif (genre Pop-Up) à une cellule:


Vous souhaitez personnaliser le format de ce commentaire :


Accéder à sa mise en forme n'est pas bien indiqué, il faut donc :

Vous avez maintenant accès à une palette de réglages beaucoup plus riche.
Vous pouvez par exemple choisir la couleur de fond, le format et la couleur du texte, les traits, le dimensionnement automatique, etc...
Il est même possible d'y insérer une photo, ce qui peut se révéler très intéressant pour une liste nominative, une énumération de lieux, un inventaire d'objets ou un listing de pièces détachées ...

Lire la suite

Mémoriser des constantes sous Excel »
Publié par Furtif - Dernière mise à jour le 19 novembre 2009 à 13:07 par marlalapocket




Sujet 8662 - Mémoriser des constantes sous Excel

[ Voir ce sujet en ligne ] - [ Catégorie: Bureautique - Microsoft Office - Excel ]

Vous avez créé votre tableau, et il y a plusieurs constantes plusieurs fois utilisées (TVA, Taux horaire, etc..).

La constante TauxTVA est mémorisée en tant que NOM, associé à une valeur.

Lire la suite

Listes déroulantes simples avec Excel »
Publié par Furtif - Dernière mise à jour le 17 novembre 2009 à 14:40 par marlalapocket




Sujet 8674 - Listes déroulantes simples avec Excel

[ Voir ce sujet en ligne ] - [ Catégorie: Bureautique - Microsoft Office - Excel ]

Dans votre tableau, vous souhaitez insérer un texte ou une valeur choisi dans une liste (déroulante).

A l'utilisation, lorsque vous cliqerez sur C3, une petite flèche s'affichera en bout de cellule pour vous proposer de choisir une des lignes de votre liste NOM1.

Contrairement à d'autres, cette méthode marche également si la liste est située sur une autre feuille du classeur en cours (avec l'aimable participation de Eriiic).

Lire la suite

Utiliser VALEUR CIBLE sous Excel »
Publié par Furtif - Dernière mise à jour le 17 novembre 2009 à 14:39 par marlalapocket




Sujet 8675 - Utiliser VALEUR CIBLE sous Excel

[ Voir ce sujet en ligne ] - [ Catégorie: Bureautique - Microsoft Office - Excel ]

Vous avez fait un devis, sous forme d'un tableau EXCEL

Vous ne souhaitez pas modifier votre Total HT (E8)
Vous ne pouvez pas modifier votre ligne TVA (E10)
Vous pouvez modifier votre Remise (E9) pour ajuster (variable d'ajustement).

OUTILS / VALEUR CIBLE / Cellule à définir .. vous cliquez sur E11 (votre Total TTC) / Valeur à atteindre ... vous indiquez la valeur arrondie que vous souhaitez présenter / Cellule à modifier ... vous cliquez sur E9 (Remise) .... OK


Excel recalcule la remise (E9) exacte pour atteindre très précisément la valeur finale (E11) souhaitée, et réajuste également votre montant de TVA (E10), sans modification du taux.

Lire la suite

Trucs Clavier souris »
Publié par Furtif - Dernière mise à jour le 12 novembre 2009 à 14:43 par marlalapocket




Sujet 10200 - Trucs Clavier souris

[ Voir ce sujet en ligne ] - [ Catégorie: Bureautique - Microsoft Office - Excel ]

Les didacticiels Excel sont chiches en petits trucs utiles, qui font toute la différence entre une utilisation besogneuse et une certaine souplesse. Aussi, les butineurs du forum sont-ils invités à ajouter leurs heureuses expériences, en réponse et à la suite de ce sujet.



Quelques trucs hérités de Quattro Pro 5


Copier la surbrillance dans le presse-papiers ======> [Ctrl + Inser]

Coller le presse-papiers sur le curseur courant ====-> [Maj + Inser]

Ces deux 1ers trucs fonctionnent quand les options du clic-droit ne sont pas disponibles.

Sélectionner une ligne en partant de la 1ère cellule gauche =====> [Maj+(Fin, puis Flèche vers la droite)]

Sélectionner une ligne en partant de la dernière cellule droite ====> [Maj+(Fin, puis Flèche vers la gauche)]
Sélectionner une colonne en partant de la 1ère cellule haute ====> [Maj+(Fin, puis Flèche vers le bas)]
Sélectionner une colonne en partant de la dernière cellule basse ==> [Maj+(Fin, puis Flèche vers le haut)]

(une suite judicieuse permet la sélection d’une zone rectangulaire)
Ces quatre derniers trucs (et demi) sont quasi indispensables pour sélectionner une zone énÔrme, sans ramer !

Sélectionner la feuille =====> Clic sur le blanc en haut à gauche

Quelques trucs indiqués dans Windows


Aller en début de fenêtre (ou début de zone de texte) ===> [Ctrl + Début]

Aller en fin de fenêtre (ou fin de zone de texte) ===> [Ctrl + Fin]

Copier l'écran dans le presse-papiers ===> [Imp.écr]

Copier la fenêtre active dans le presse-papiers (peut être une saisie hors Excel !) ==> [Alt+Impr.écr]

Quelques trucs (+/-) de l’écran à l’œil


Copier en longeant la droite d’une colonne continûment pleine

• une formule ou une valeur
-> Sélection de la cellule,
-> double-clic sur le petit rectangle, en bas à droite du cadre

• une progression arithmétique (ex : 1, 2, 3, … )
-> Sélection des deux premières cellules avec les termes,
-> double-clic sur le petit rectangle, en bas à droite du cadre

Modifier les zones de saisie des séries d’un graphe

-> Sélection du graphe par cliqué dessus
Les séries sont alors délimitées par des encadrés de couleur

• déplacer cette zone :
-> faire glisser avec la flèche apparaissant sous le pointeur
-> de la souris, en haut de la zone

• redimensionner cette zone :
-> faire glisser le petit rectangle apparaissant
-> en bas, à droite du cadre de couleur

• rajouter le graphe d’une autre fonction du même x
-> faire glisser, ou coller sa série, sur la zone graphique

• supprimer un graphe
-> sélection, puis [Suppr]

• fonction avec des valeurs de x différentes
-> entrer les x dans leur colonne
-> entrer les y dans une nouvelle colonne, vis-à-vis,
-> même si c’est la même fonction qu’une précédente !
(c’est le plus facile …)

• Autres raccourcis
-> Copier la sélection dans le presse-papiers Ctrl + C
-> Copier la sélection dans le presse-papiers et l'effacer Ctrl + X
-> Coller le contenu du presse-papiers Ctrl + V

• Sélection sur des emplacements discontinus
-> Maintenir la touche Ctrl enfoncée
-> Sélectionner les différents blocs (soit en colonnes, soit en lignes)
-> Copier la sélection dans le presse-papiers Ctrl + C
-> Relâcher la touche Ctrl
-> Sélectionner la cellule de destination
-> Coller le contenu du presse-papiers Ctrl + V
-> Les blocs discontinus seront collés de façon contigüe.

Ces trucs ont été fournis par Arrial >>>http://www.commentcamarche.net/forum/affich 5781951 ty trucs clavier souris sous excel
Merci à lui.

Lire la suite

VBA Un timer une seconde tout simple »
Publié par baladur13 - Dernière mise à jour le 13 novembre 2009 à 18:23 par marlalapocket




Sujet 10315 - VBA Un timer une seconde tout simple

[ Voir ce sujet en ligne ] - [ Catégorie: Bureautique - Microsoft Office - Excel ]


En VBA, il n'y a pas (du moins à ma connaissance) de composant Timer.
On peut en créer un très facilement.

Dans un module de feuille


Activer/ dés activer le timer : Placer un bouton sur Feuil1 et mettre le code...
Private Sub CommandButton1_Click()
    TimeOnOFF = Not TimeOnOFF
    If TimeOnOFF Then
        Smem = 0
        Timer
    End If
End Sub

Dans un module public


Public TimeOnOFF As Boolean
Public Smem As Integer

Sub Timer()
Dim VV
    If TimeOnOFF Then
        'Mettre code ici pour être exécuté toute les secondes
        Smem = Smem + 1
        If Smem = 1 Then
            Sheets("feuil1").[C1] = Time
        ElseIf Smem = 2 Then
                'Mettre code ici pour être exécuté toute les 2 secondes
            Sheets("feuil1").[C1] = Replace(Time, ":", " ")
            Smem = 0
        Else
            Smem = 0
        End If
        VV = TimeSerial(Hour(Time), Minute(Time), Second(Time) + 1)
        Application.OnTime VV, "timer", False
    End If
End Sub

Remarque : La sub affiche l'heure avec/sans les deux points de séparation, pour éviter le mouvement du texte dans la cellule mettre la police à @Arial Unicode MS

Lire la suite

VBA et les collections d'objets. »
Publié par lermite222 - Dernière mise à jour le 4 novembre 2009 à 16:33 par marlalapocket




Sujet 10397 - VBA et les collections d'objets.

[ Voir ce sujet en ligne ] - [ Catégorie: Bureautique - Microsoft Office - Excel ]


VBA et les collections d'objets


Quand plusieurs (beaucoup de) contrôles sont mis sur une feuille ou un Userform il est parfois fastidieux d'écrire du code dans chaque évènement des contrôles.
Ce Tuto vous permet de traiter vos contrôles comme s'ils étaient indexés, (mode VB6 avec index)



Préliminaires


Pour les tests et démos, ouvrez un nouveau classeur.
Incorporez, l'un en dessous de l'autre, dans la colonne C ...
OptionButton1 et OptionButton2 propriété GroupName = Feuil1A
OptionButton3 et OptionButton4 propriété GroupName = Feuil1B
CheckBox1, CheckBox2 et CheckBox3

Sauvez le classeur sous le nom Collections.xls

Dans un module


Option Explicit 
Public Collect As Collection 
Public CollectC As Collection 


Public Sub InitOption() 
Dim Obj As OLEObject 
Dim Cl As Classe1 
Set Cl = Nothing 
Set Collect = New Collection 
Workbooks("Collections.xls").Activate 
'boucle sur les objets de la Feuil1 
For Each Obj In Sheets("Feuil1").OLEObjects 
    'verifie s'il s'agit d'un OptionButton 
    If TypeOf Obj.Object Is MSForms.OptionButton Then 
         
        Set Cl = New Classe1 
        Set Cl.OptionButtonGroup = Obj.Object 
        Collect.Add Cl 
    End If 
Next Obj 

End Sub 

Public Sub InitCheck() 
Dim Obj As OLEObject 
Dim CO As Classe1 
Set CO = Nothing 
Set CollectC = New Collection 
Workbooks("Collections.xls").Activate 
'boucle sur les objets de la Feuil1 
For Each Obj In Sheets("Feuil1").OLEObjects 
    'verifie s'il s'agit d'une Checkbox 
    If TypeOf Obj.Object Is MSForms.CheckBox Then 
         
        Set CO = New Classe1 
        Set CO.CheckBoxGroup = Obj.Object 
        CollectC.Add CO 
    End If 
Next Obj 

End Sub


'Routine à appeler pour Initialiser ou Réinitialiser les collections.
'Nécessaire si le code VBA a été modifié.
Sub ActivationCollect() 
    InitOption 
    InitCheck 
End Sub

Dans un module de classe


Pour ouvrir un module de classe >> Insertion >> Module de classe.
Copiez ce code...

'-------------------------------------- 
'Dans un module de classe nommé "Classe1" 
' 
Option Explicit 

Public WithEvents OptionButtonGroup As MSForms.OptionButton 
Public WithEvents CheckBoxGroup As MSForms.CheckBox 


'Evenement Click sur les CheckBox de la feuille de calcul. 
Private Sub CheckBoxGroup_Click() 
     
    'Renvoie le nom et la valeur de la CheckBox cliquée 
    MsgBox CheckBoxGroup.Name & ": " & CheckBoxGroup.Value 
     
    'Exemple qui renvoie dans la colonne A, la valeur de CheckBox 
    Cells(CheckBoxGroup.TopLeftCell.Row, 1) = CheckBoxGroup.Value 
End Sub 

'Evenement Click sur les CheckBox de la feuille de calcul. 
Private Sub OptionButtonGroup_Click() 
     
    'Renvoie le nom et la valeur de l'OptionButton cliquée 
    MsgBox OptionButtonGroup.Name & ": " & OptionButtonGroup.GroupName 
     
    'Exemple qui renvoie dans la colonne A, la valeur de l'OptionButton 
    Cells(OptionButtonGroup.TopLeftCell.Row, 1) = OptionButtonGroup.Value 
End Sub

Et dans le module du classeur


Private Sub Workbook_Open() 
    InitOption 
    InitCheck 
End Sub


A l'ouverture du classeur les collections sont opérationnelles, mais si le code VBA est modifié, les collections seront désactivées, il faudra donc appeler la sub ActivationCollect soit en mettant le curseur au milieu de la sub et taper F5, soit en créant un raccourci.

Lire la suite

Activer un onglet précis dans un classeur en contenant beaucoup »
Publié par lermite222 - Dernière mise à jour le 3 mai 2010 à 16:53 par spe2d




Sujet 10484 - Activer un onglet précis dans un classeur en contenant beaucoup

[ Voir ce sujet en ligne ] - [ Catégorie: Bureautique - Microsoft Office - Excel ]


Comment activer un onglet précis dans un classeur en contenant un grand nombre


Ne vous en faites pas Excel a tout prévu.

1.Faites un clic droit sur les flèches situées en bas à gauche :



2.Une liste s'affiche, si l'onglet que vous cherchez s'y trouve, cliquez dessus, il sera activé sinon cliquez, dans cette liste, sur "Plus de feuilles..." :



3. Une boîte de dialogue s'ouvre avec la liste des onglets :



4. Plusieurs possibilités s'ouvrent à vous pour sélectionner celui que vous cherchez :

Après ces quelques manipulations, vous vous trouvez sur l'onglet souhaité.

Lire la suite

VBA Ajouter commandButton et le code qui va avec »
Publié par aquarelle - Dernière mise à jour le 16 novembre 2009 à 12:53 par marlalapocket




Sujet 11237 - VBA Ajouter commandButton et le code qui va avec

[ Voir ce sujet en ligne ] - [ Catégorie: Bureautique - Microsoft Office - Excel ]


Code relativement simple et qui ne nécessite pas d'explication complémentaire.
Coller ces deux sub dans un module général (Module1 par exemple).

Sub CréerBouton()  

Dim Obj As Object  
Dim Code As String  

Sheets("Feuil1").Select  

'crée le bouton  
    Set Obj = ActiveSheet.OLEObjects.Add(ClassType:="Forms.CommandButton.1", _  
    Link:=False, DisplayAsIcon:=False, Left:=200, Top:=100, Width:=100, Height:=35)  
    Obj.Name = "BoutonTest"  
'texte du bouton  
    ActiveSheet.OLEObjects(1).Object.Caption = "Tester le bouton"  

'Le texte de la macro  
    Code = "Sub BoutonTest_Click()" & vbCrLf  
    Code = Code & "Call Tester" & vbCrLf  
    Code = Code & "End Sub"  
'Ajoute la macro en fin de module feuille  
    With ActiveWorkbook.VBProject.VBComponents(ActiveSheet.Name).CodeModule  
        .insertlines .CountOfLines + 1, Code  
    End With  
End Sub  

Sub Tester()  
    MsgBox "Vous avez cliquez sur le bouton test"  
End Sub


Télecharger un classeur Excel 2007 et >
Serveur 1 : Ajouter_boutons_et_codes.xls
Serveur réserve : Ajouter_boutons_et_codes.xls

Publié par lermite222 - Dernière mise à jour le 28 février 2011 à 19:55 par lermite222
Ce document intitulé « VBA Ajouter commandButton et le code qui va avec » issu de Comment Ça Marche Informatique (www.commentcamarche.net) est mis à disposition sous les termes de la licence Creative Commons. Vous pouvez copier, modifier des copies de cette page, dans les conditions fixées par la licence, tant que cette note apparaît clairement.




Sujet 11495 - Créer rapidement un planning de congés simple [Excel]

[ Voir ce sujet en ligne ] - [ Catégorie: Bureautique - Microsoft Office - Excel ]


Le travail de base est terminé. Saisissez pour chaque personnel la lettre c dans les cases correspondant à ses jours de congés : Elles apparaissent en bleu !

Voici le document Excel tel qu'il devrait être après ces étapes : Planning de congés

Il ne vous reste qu'à fignoler la présentation à votre convenance ; par exemple :
Complément pour calcul des jours ouvrés [Excel 2007 uniquement]. Si vous souhaitez utiliser ce planning pour décompter le nombre de jours ouvrés (ou ouvrables) consommés par chaque agent, il faut ajouter un marquage des samedis, dimanches, jours fériés et autres ponts.
Voici le document Excel 2007 avec le complément de calcul des jours ouvrés: Planning de congés - 2

Remplissage automatisé.
Après la colonne A, insérer 3 nouvelles colonnes Date début, Date fin et Jours ouvrés.

Lire la suite

[VBA] Détection de modification de cellule »
Publié par Raymond PENTIER - Dernière mise à jour le 2 novembre 2009 à 16:03 par marlalapocket




Sujet 12394 - [VBA] Détection de modification de cellule

[ Voir ce sujet en ligne ] - [ Catégorie: Bureautique - Microsoft Office - Excel ]


Exemple pour une MFC avec plus de 3 conditions.
Private Sub Worksheet_Change(ByVal Target As Range)
Dim Cel As Range
    For Each Cel In Target
        'Adapter la/les plages. 
        If Not Intersect(Cel, Range("B1:B30,D1:D30")) Is Nothing Then
            Select Case Cel.Value
            Case 5 To 10: Cel.Interior.Color = vbRed
            Case 11 To 20: Cel.Interior.Color = vbGreen
            Case 21 To 30: Cel.Interior.Color = vbBlue
            Case 31 To 50: Cel.Interior.Color = vbYellow
            Case Else: Cel.Interior.ColorIndex = xlNone
            End Select
        End If
    Next Cel
End Sub

Bien entendu il est possible de faire d'autres actions

Lire la suite

[VBA] RechercheV Polyvalente »
Publié par lermite222 - Dernière mise à jour le 3 novembre 2009 à 16:17 par marlalapocket




Sujet 12543 - [VBA] RechercheV Polyvalente

[ Voir ce sujet en ligne ] - [ Catégorie: Bureautique - Microsoft Office - Excel ]


RECHERCHE POLYVALENTE


Pour les accros et les inconditionnels des fonctions d'Excel, avant de crier au scandale, lisez les quelques lignes suivantes.
La RechercheV d'origine a beaucoup de limites:

La rechercheV polyvalente que je propose n'a pratiquement pas de limite.

Description


Les fonctions doivent être dans une colonne. Chaque fonction cherche dans sa propre colonne en remontant jusqu’en ligne 1 une formule absolument identique à elle-même (afin de trouver le n° d’occurrence).
Il faut utiliser les formats absolus $ pour les cellules paramètres

Dans la colonne E ligne de 3 à 9 se trouve la formule


     =RechercheVmulti($C$3;$B$3;$H$3)

C3 = la colonne où se trouve la liste de recherche, la recherche commence à la ligne 3, cela pourrait être une autre ligne et la recherche commencerait au N° de cette ligne.
B3 = la cellule critère
H3 = la colonne où la donnée va être saisie, peut être n'importe où sur la même ligne.

Dans la colonne F ligne de 3 à 7 se trouve la formule


     =RechercheVmulti($C$3;$B$3;$A$3; 20)

C3 = la colonne où se trouve la liste de recherche, la recherche commence à la ligne 3, cela pourrait être une autre ligne et la recherche commencerait au N° de cette ligne.
B3 = la cellule critère
A3 = la colonne où la donnée va être saisie, peut se situer n'importe où sur la même ligne.(ici offset négatif)
20 = la recherche s'arrête à la ligne 20, même s'il y a d'autres concordances plus bas.
Ce qui permet de délimiter la plage de la colonne - Début de recherche dans (C)3 et fin dans (C)20
Ce paramètre est optionnel : si pas renseigné, fait la recherche sur toute la colonne renseignée.

Le code


Collez le code ci-dessous dans un MODULE STANDARD (pas dans un module de feuille)
Option Explicit

'RD =cellule où commencer la recherche
'RC = cellule critère
'RDT = cellule où chercher la donnée
'Ligne rechercher jusque ligne... (optional) si 0 cherche jusqu'au bout de la ligne

Public Function RechercheVmulti(RD As Range, RC As Range, RDT As Range, _
            Optional Ligne As Long = 0)

Dim i As Integer, e As Integer, Txt As String
Dim LigE As Long, ColE As Long 'où écrire résultats
Dim Col As Integer
Dim Lig As Long, Occ As Long
Dim FeuilE As String, FeuilRD As String, FeuilRDT As String

    On Error GoTo sortie
    LigE = Application.Caller.Row
    ColE = Application.Caller.Column
    FeuilE = Application.Caller.Parent.Name
    Application.Volatile
    Lig = RD.Row ' Ligne où commencer la recherche
    Col = RD.Column 'Colonne où commencer la recherche
    FeuilRD = RD.Parent.Name
    FeuilRDT = RDT.Parent.Name
    If Ligne = 0 Then
        Ligne = Range(Sheets(FeuilRD).Cells(65536, Col), Sheets(FeuilRD).Cells(65536, Col)).End(xlUp).Row
    End If
    'Recherche le numéro de l'occurrence à trouver
    For Occ = LigE - 1 To 1 Step -1
        Txt = Sheets(FeuilE).Cells(Occ, ColE).Formula
        If Txt = Sheets(FeuilE).Cells(LigE, ColE).Formula Then
            e = e + 1
        End If
    Next Occ
    For i = Lig To Ligne
        If Sheets(FeuilRD).Cells(i, Col) = RC Then
            If e <> 0 Then
                e = e - 1
            Else
                RechercheVmulti = Sheets(FeuilRDT).Cells(i, RDT.Column)
                Exit Function
            End If
        End If
    Next i
    'Si plus trouvé de concordance
    RechercheVmulti = ""
Exit Function
sortie:
    'si erreur dans la formule, non détectée par Excel.
    RechercheVmulti = "#FAUTE!"
End Function

Lire la suite

[VBA] Fonction NB.SI_Plus »
Publié par lermite222 - Dernière mise à jour le 3 novembre 2009 à 17:53 par marlalapocket




Sujet 12864 - [VBA] Fonction NB.SI_Plus

[ Voir ce sujet en ligne ] - [ Catégorie: Bureautique - Microsoft Office - Excel ]


Fonction NB.SI_Plus sans limitation



Cette fonction "Plus" permet d'appliquer la fonction NB.SI sans que l'on soit limité au nombre de paramètres imposés par Excel.


Introduction


Le classeur



L'emplacement de la plage de critères ne doit pas être obligatoirement à cet endroit ; elle peut être dans un coin perdu de la feuille.

Dans un module général


Coller le code ci-dessous
Function NbSi_Plus(PlageRech As Variant, PlageCritere1 As Range)
Dim i As Integer, e As Integer, N As Integer, C1 As Integer
Dim M As Long, Mcont As Integer, Tot As Long
Dim TBF
Dim Cell As Range
Dim DebL As Long, FinL As Long
Dim DebC As Long, FinC As Long
Dim Col()
Dim Crit()
    'Initialise les filtres
    i = 0
    For Each Cell In PlageRech
        ReDim Preserve Crit(1, i)
        If Cell <> "" Then
            Mcont = Mcont + 1
            Crit(1, i) = Asc(Cell) '60="<" 62=">"
            
            
            If Len(Cell) > 1 Then
                If Asc(Mid(Cell, 2, 1)) = 60 Or Asc(Mid(Cell, 2, 1)) = 62 Then
                    Crit(1, i) = 61
                End If
            End If
            Select Case Crit(1, i)
            Case 60, 62
                Crit(0, i) = Mid(Cell, 2)
            Case 61
                Crit(0, i) = Mid(Cell, 3)
            Case Else
                Crit(0, i) = Cell
            End Select
        Else
            Crit(1, i) = 0
        End If
        i = i + 1
    Next Cell
    
    'Rechercher si bloc ou toute la colonne
    TBF = Split(PlageCritere1.Address, ":")
    DebL = Range(TBF(0)).Row
    DebC = Range(TBF(0)).Column
    If UBound(TBF) > 0 Then
        FinL = Range(TBF(1)).Row
        
    End If
    If DebL = FinL Or FinL = 0 Then
        'faire le tri sur toute la hauteur de la colonne
        FinL = Cells(65536, Range(TBF(0)).Column).End(xlUp).Row
    End If
    FinC = DebC + UBound(Crit, 2)
    
    'Appliquer les filtres
    For i = DebL To FinL
        M = 0: C1 = 0
        For e = DebC To FinC
            If Crit(0, C1) <> "" Then
                'For N = 0 To UBound(Crit, 2)
                    Select Case Crit(1, C1)
                    Case 60
                        If Cells(i, e) < Val(Crit(0, C1)) Then M = M + 1
                    Case 61
                        If Cells(i, e) <> Val(Crit(0, C1)) Then M = M + 1
                    Case 62
                        If Cells(i, e) > Val(Crit(0, C1)) Then M = M + 1
                    Case Is <> 0
                        If Cells(i, e) = CStr(Crit(0, C1)) Then M = M + 1
                    End Select
                
            End If
            C1 = C1 + 1
        Next e
        If M = Mcont Then Tot = Tot + 1
    Next i

    NbSi_Plus = Tot
End Function

Télécharger le classeur


Sur CiJoint avant le 20/09/2008
Si plus sur Cijoint, vous pouvez m'envoyer un MP et je le remettrai.

Fin


Lire la suite

Import CSV: Mauvais alignement des dates »
Publié par lermite222 - Dernière mise à jour le 4 novembre 2009 à 16:07 par marlalapocket




Sujet 13108 - Import CSV: Mauvais alignement des dates

[ Voir ce sujet en ligne ] - [ Catégorie: Bureautique - Microsoft Office - Excel ]

Vous avez ouvert un fichier CSV avec Excel contenant une colonne de dates et ces dernières sont mal alignées. Elles sont par exemple tantôt alignées à droite, tantôt à gauche.

A vrai dire, il se peut que votre problème soit plus grave que vous ne le pensez.

Prenons un exemple avec le fichier CSV suivant:
02/07/2005,machin
04/07/2005,bidule
17/07/2005,bleurp
01/07/2005,chouette

A présent, ouvrons-le avec Excel et observons le résultat:



Etrange... Les dates sont bien alignées, sauf une, qui se retrouve à gauche. Mais qu' a-t-il bien pu se passer ?!
A vrai dire, le problème va plus loin : les dates ont été retournées. Ce qui était 02/07/2005 s'est transformé en 07/02/2005, sauf pour la date alignée à gauche.

En réalité, lorsque vous exportez des dates au format CSV, Excel s'attend à ce que vous les lui fournissiez sous la forme anglaise: mm/jj/aaaa alors que le format français est à l'envers: jj/mm/aaaa

Ainsi, si vous voulez avoir des dates bien alignées et surtout cohérentes, pensez à bien agencer vos dates dans votre fichier CSV.
Dans notre exemple, le fichier devrait être le suivant:
07/02/2005,machin
07/04/2005,bidule
07/17/2005,bleurp
07/01/2005,chouette

Et voilà :-)

Lire la suite

Formules sur Matrice Multi-Feuilles »
Publié par kilian - Dernière mise à jour le 12 novembre 2009 à 15:11 par marlalapocket




Sujet 13258 - Formules sur Matrice Multi-Feuilles

[ Voir ce sujet en ligne ] - [ Catégorie: Bureautique - Microsoft Office - Excel ]


Formules sur feuilles multiples


Le sommaire est le suivant:


Introduction


Seules les Formules Somme, Moyenne, Nb, Nbval permettent de faire des calculs sur des plages discontinues ou Multi-Feuilles (Calcul en 3 Dimensions).
exemple :
=Somme(Feuil1:Feuil3!A1:A10) : effectue la somme de la plage A1:A10 des 3 feuilles.

Somme.si, Nb.si, Sommeprod, Index, Equiv ainsi que les formules matricielles ne le font pas, même avec des plages nommées.

Cette Fonction personnalisée n'a pas pour but de ré-écrire les différentes formules, mais transforme une plage discontinue ou une plage sur un certain nombre de feuilles en une seule matrice.

Syntaxe


=Trf_plage(Ma Plage; "Feuil1:Feuil3")

Exemples


Je tiens à préciser que les formules nb.si ou somme.si ne fonctionnent toujours pas, mais elles peuvent êtres facilement transformées en formules matricielles.
Index associé à Equiv Fonctionne très bien. (Nous avons maintenant une recherche Multi-Feuilles).

Les formules sur fond roses sont des Formules matricielles.
Elle doivent être validées en appuyant simultanément sur les touches Ctrl + Maj + Entrée. Si la validation est correctement effectuée, des {} encadrent automatiquement la formule.


Téléchargez le fichier d'exemples en cliquant ici

Code


Voici le code de la fonction personnalisée, à placer dans un module standard.
Function M_Charge(plage As Range, Optional feuilles As String = "") As Variant
    Dim cel As Range, i As Long, j As Integer, tablo() As Variant, tablof() As Variant
    Dim f As Integer, feuille1 As String, feuille2 As String
    Application.Volatile ' Permet un recalcul automatique
' Définition de la feuille par défaut si aucune feuille n'est mentionnée
    If feuilles = "" Then feuilles = ActiveSheet.Name & ":" & ActiveSheet.Name
    i = -1
    If InStr(feuilles, ",") > 0 Then ' traitement des feuilles non contigues (séparées par des virgules)
        While InStr(feuilles, ",") > 0
            i = i + 1
            ReDim Preserve tablof(i)
            tablof(i) = Left(feuilles, InStr(feuilles, ",") - 1)
            feuilles = Mid(feuilles, InStr(feuilles, ",") + 1, Len(feuilles) - InStr(feuilles, ","))
        Wend
    End If
    i = i + 1
    ReDim Preserve tablof(i)
    tablof(i) = feuilles
    i = -1
    For f = LBound(tablof) To UBound(tablof) ' traite les différent blocs de feuilles
        feuilles = tablof(f)
        If InStr(feuilles, ":") = 0 Then feuilles = feuilles & ":" & feuilles ' je crée le bloc la feuille est seule
' Récupération de la feuille de début et la feuille de fin
        feuille1 = Left(feuilles, InStr(feuilles, ":") - 1)
        feuille2 = Right(feuilles, Len(feuilles) - InStr(feuilles, ":"))
' Passage en revue de toutes les feuilles entre Feuille1 et Feuille2
        For j = Sheets(feuille1).Index To Sheets(feuille2).Index  ' Each ws In Sheets(feuilles)
            For Each cel In plage ' Pour chacune des cellules de la plage
                i = i + 1
                ReDim Preserve tablo(i) ' J'incrémente la table en cours de création
                tablo(i) = Sheets(j).Cells(cel.Row, cel.Column).Value ' Récupélation de la valeur
            Next
        Next j
    Next f
        M_Charge = tablo ' Affectation du tableau à la fonction (la matrice est créée)
End Function

Lire la suite

[VBA] Fonction qui retourne la couleur active d'une MFC »
Publié par wilfried_42 - Dernière mise à jour le 5 novembre 2009 à 18:09 par marlalapocket




Sujet 15556 - [VBA] Fonction qui retourne la couleur active d'une MFC

[ Voir ce sujet en ligne ] - [ Catégorie: Bureautique - Microsoft Office - Excel ]

Cette fonction retourne la valeur du format actif d'une mise en forme conditionnelle.
Avec la fonction de la démo, deux valeurs peuvent êtres retournées.
Mais avec quelque modifications toutes les autres propriétés peuvent êtres renvoyées.

Public Function CouleurMFC(RG As Range, Optional Mode As Byte = 0) As Variant
Dim e As Long, i As Byte, LoTest As Boolean
Dim LoMFC As FormatCondition
    Application.Volatile
    'boucle sur le nombre de condition(s)
    'Si pas de MFC .FormatConditions.Count renvoi 0
    For i = 1 To RG.FormatConditions.Count
        Set LoMFC = RG.FormatConditions(i)
        If LoMFC.Type = xlCellValue Then
        'tester le type de la formule entrée
            Select Case LoMFC.Operator
            Case xlEqual
                LoTest = RG = Evaluate(LoMFC.Formula1)
            Case xlNotEqual
                LoTest = RG <> Evaluate(LoMFC.Formula1)
            Case xlGreater
                LoTest = RG > Evaluate(LoMFC.Formula1)
            Case xlGreaterEqual
                LoTest = RG >= Evaluate(LoMFC.Formula1)
            Case xlLess
                LoTest = RG < Evaluate(LoMFC.Formula1)
            Case xlLessEqual
                LoTest = RG <= Evaluate(LoMFC.Formula1)
            Case xlNotBetween
                LoTest = (RG < Evaluate(LoMFC.Formula1) Or RG > Evaluate(LoMFC.Formula2))
            Case xlBetween
                LoTest = (RG >= Evaluate(LoMFC.Formula1)) And (RG <= Evaluate(LoMFC.Formula2))
            End Select
            If LoTest Then
                'Peu ajouter d'autre format si nécessaire,
                'comme la bordure, la police etc..
                Select Case Mode
                Case 0
                    CouleurMFC = LoMFC.Interior.ColorIndex
                Case 1
                    CouleurMFC = LoMFC.Interior.Color
                End Select
                Exit Function
            End If
        End If
    Next i
    CouleurMFC = 0
End Function


La formule dans le tableur
=CouleurMFC(A2)


La MFC peut être avec une valeur directe ou une valeur indirecte (le contenu d'une autre cellule)

Lire la suite

[VBA]Connecter une base de donnée (MDB) à excel »
Publié par lermite222 - Dernière mise à jour le 6 novembre 2009 à 10:06 par marlalapocket




Sujet 16016 - [VBA]Connecter une base de donnée (MDB) à excel

[ Voir ce sujet en ligne ] - [ Catégorie: Bureautique - Microsoft Office - Excel ]


Connecter une base de donnée access (MDB) dans une application excel.

Dans un module général (Module1 par exemple) coller le code ci-dessous


Sub CopieDBaccess() 
Dim BDexp As Database 
Dim Table As Recordset 
Dim TbDef As TableDef 
Dim Ch As String, Lig As Long, i As Integer 
    Ch = "Chemin & \ & NomDeLaBD.MDB" 
    Set BDexp = DBEngine.Workspaces(0).OpenDatabase(Ch) 
    Set Table = BDexp.OpenRecordset("NomDeLaTable", dbOpenDynaset) 
    'Debug.Print Table.Name 
    Set TbDef = BDexp.TableDefs("NomDeLaTable") 
    Lig = 3 
dim  Nom(TbDef.Fields.Count - 1) As String 
'Place les titres des colonnes 
With Sheets("Feuil1") 
    For i = 0 To TbDef.Fields.Count - 1 'Pour avoir toute la ligne 
        'Debug.Print TbDef.Fields(i).Name 
        Nom(i) = TbDef.Fields(i).Name 
        .Cells(Lig, i + 3) = Nom(i) 
    Next 
    'Caller sur le 1er enrégistrement 
    Table.MoveFirst 
    Lig = 4 
    While Not Table.EOF 
        For i = 0 To TbDef.Fields.Count - 1 'Pour avoir toute la ligne 
            .Cells(Lig, i + 3) = Table(Nom(i)) 
        Next i 
        Lig = Lig + 1 
        Table.MoveNext  'Passer à l'enrégistrement suivant 
    Wend 
End With
    Table.Close 
    BDexp.Close 
    Set BDexp = Nothing 
    Set Table = Nothing 

End Sub

Lire la suite

Excel - Surligner la ligne active »
Publié par lermite222 - Dernière mise à jour le 28 septembre 2010 à 12:12 par lermite222




Sujet 16023 - Excel - Surligner la ligne active

[ Voir ce sujet en ligne ] - [ Catégorie: Bureautique - Microsoft Office - Excel ]


Quand on "ripe" sur la feuille on perd souvent le point de repère.
Cette petite fonction surligne (le fond en rouge et l'écriture en jaune), toute la ligne où se trouve le curseur.

À placer dans le module de la feuille


Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Static AncAdress As Long
'Si la fonction activer/Déactiver est implémentée ajouter la ligne ci-dessous
    if ActivationLigne  then exit sub

    If Target.Count > 1 Then Exit Sub
    If AncAdress <> 0 Then 'remettre en normal
        Rows(AncAdress).Interior.ColorIndex = xlNone
        Rows(AncAdress).Font.ColorIndex = 0
    End If
    Target.EntireRow.Font.ColorIndex = 6
    Target.EntireRow.Interior.ColorIndex = 3
    Target.EntireRow.Interior.Pattern = xlSolid
    AncAdress = Target.Row
End Sub

Éventuellement ajouter dans un module général (module1 par exemple)


Si vous voulez activer/désactiver la fonction
Par défaut le surlignage est actif, il faut cliquer sur le bouton ou le raccourci pour changer

Public ActivationLigne as boolean
Sub Activer()
    ActivationLigne =not ActivationLigne
end sub

Lire la suite

Excel - Convertir fichier(s) CSV / XLS »
Publié par lermite222 - Dernière mise à jour le 4 novembre 2009 à 14:59 par marlalapocket




Sujet 16109 - Excel - Convertir fichier(s) CSV / XLS

[ Voir ce sujet en ligne ] - [ Catégorie: Bureautique - Microsoft Office - Excel ]



Comme dit dans le titre, cette application convertit des fichiers CSV en fichiers XLS
N'est pas nécessaire pour Excel 2007, ce dernier faisant la conversion automatiquement
La conversion n'ayant pas de mise en forme, en cas de modification ultérieure des fichiers XLS ils devront êtres sauvés sous le format de l'Excel employé mais sans aucune difficulté, il suffit de cliquer oui sur le message.
Étant donné que plusieurs sous-fonctions sont reprises dans ce tutoriel, elles sont séparées en paragraphes.


Trois modes de lecture sont disponibles.
Pour ces deux derniers modes, les formats de cellules tel que les dates doivent êtres reformatées

Préliminaires


Ouvrir un nouveau classeur et le renommer sous Convertir Csv_xls.xls et y coller un bouton.
Ouvrir l'IDE de VBA (Alt+F11)
Ajouter un Userforme, le renommer csvxls et mettre les contrôles...
Un frame >Caption = Opérations, avec
Un Frame > caption = Sortie en, avec...


Code dans Feuil1



Private Sub CommandButton1_Click()  
    'En Non Modale, permet de laisser l'userforme afficher et   
    'de naviguer dans le nouveau classeur.  
    csvxls.Show 0  
End Sub

Code dans le module de l'userform


Private Sub CommandButton1_Click()  
    SuppFichier = Supprimer_CVS.Value  
    SauveXLS = Sauver_XLS.Value  
      
    If Texte_Num.Value Then  
        TxtNum = 1  
    ElseIf OptNumeric Then  
        TxtNum = 2  
    Else  
        TxtNum = 3  
    End If  
      
    If Un_Seul_Fichier.Value = True Then  
    'Un seul fichier du répertoir  
        If SelectionFichier() Then  
            ConvertiCvsXls  
        End If  
    Else  
    'Tout un répertoir  
        ConvertiRep  
    End If  
End Sub  

Private Sub Sauver_XLS_Click()  
    Supprimer_CVS.Enabled = Sauver_XLS  
    If Not Sauver_XLS Then  
        Supprimer_CVS = False  
    End If  
End Sub

Code dans Module1


Pour ajouter un module >> Insertion >> Module (c'est la fenêtre Module1)

Code dans l'entête


Option Explicit  
Public Chemin As String  
Public Fichier As String  

Const Ext = "csv"  

'Détermine si les fichiers du répertoire seront supprimer  
Public SuppFichier As Boolean  

'Détermine si sauve en xls  
Public SauveXLS As Boolean  

'Détermine si tous les fichiers du répertoire seront convertit  
Public Tous As Boolean  

'Détermine sortie texte/Numérique  
Public TxtNum As Integer

Lire tout les fichiers du répertoir spécifié


Sub ConvertiRep()  
Dim fs, F, f1, s, sf  
Dim i As Long, Fin As Long  
'-----------------------------------------------------------  
    'Sélectionner le répertoir  
    SelectionRep  
'-----------------------------------------------------------  
    Set fs = CreateObject("Scripting.FileSystemObject")  
    Set F = fs.GetFolder(Chemin)  
    Set sf = F.Files  
    For Each f1 In sf  
        If LCase(Right(f1.Name, 3)) = Ext Then  
            Fichier = f1.Name  
            ConvertiCvsXls  
        End If  
    Next  
End Sub

Convertir un fichier cvs en xls


Sub ConvertiCvsXls()  
Dim TB  
Dim Lig As Long, i As Integer, AncNom As String  
    AncNom = Fichier  
    If Right(Chemin, 1) <> "" Then Chemin = Chemin & ""  
    Workbooks.Open Filename:=Chemin & Fichier  
    Application.DisplayAlerts = False  
    Application.ScreenUpdating = False  
    With ActiveSheet  
        Select Case TxtNum  
        Case 1  
            .Cells.NumberFormat = "@"  
        Case 2  
            .Cells.NumberFormat = "0.000"  
        Case 3  
            .Cells.NumberFormat = "General"  
        End Select  
        For Lig = 1 To Range("A65536").End(xlUp).Row  
'Changer la  , (virgule) par le séparateur de votre fichier  
            TB = Split(.Cells(Lig, 1), ",")  
            For i = 0 To UBound(TB)  
                .Cells(Lig, i + 1) = TB(i)  
            Next i  
        Next Lig  
    End With  
    If SauveXLS Then  
        Fichier = Left(Fichier, Len(Fichier) - 3) & "xls"  
        If Dir(Chemin & Fichier) = "" Then  
            'le fichier xls n'existe pas encore  
            ActiveWorkbook.SaveAs Chemin & Fichier, FileFormat:=xlExcel9795 'Jusqu'au 2000  
            Workbooks(Fichier).Close SaveChanges:=False  
        Else  
            'le fichier xls existe, voir si ont l'écrase sans tomber en erreur.  
            If MsgBox("Le fichier " & Fichier & " existe déjà" & Chr(13) _  
            & "Faut-il l'écraser ?", vbQuestion + vbYesNo, "Ecraser fichier") = 6 Then  
                Application.DisplayAlerts = False  
                ActiveWorkbook.SaveAs Chemin & Fichier, FileFormat:=xlExcel9795 'Jusqu'au 2000  
                Workbooks(Fichier).Close SaveChanges:=False  
                Application.DisplayAlerts = True  
            ElseIf Tous Then  
                'Eviter la surcharge de classeur si tous les fichiers  
                Workbooks(AncNom).Close SaveChanges:=False  
            Else  
                Application.ScreenUpdating = True  
                Application.DisplayAlerts = True  
                Exit Sub  
            End If  
        End If  
    End If  
    If SuppFichier Then  
        'supprime le fichier cvs  
        Kill Chemin & AncNom  
    End If  
    Application.DisplayAlerts = True  
    Application.ScreenUpdating = True  
End Sub

Sélectionner le chemin par boite de dialogue


Sub SelectionRep()  
Const ssfTous = &H1  
Dim objShell As Object, objFolder As Object, oFolderItem As Object  
    Set objShell = CreateObject("Shell.Application")  
    Set objFolder = objShell.BrowseForFolder(&H0&, "Choisir un répertoire", ssfTous)  
    Set oFolderItem = objFolder.Items.Item  
    Chemin = oFolderItem.Path  
    Set objShell = Nothing  
    Set objFolder = Nothing  
    Set oFolderItem = Nothing  
End Sub

Sélectionner un fichier par boite de dialogue


Function SelectionFichier() As Boolean  
Dim nomfich As String, i As Integer  
    nomfich = Application.GetOpenFilename(FileFilter:="(*.csv),*.csv" _  
            , Title:="Sélectionnez le fichier à convertir")  
    If nomfich = "Faux" Then 'pas de sélection faite  
        Exit Function  
    End If  
    For i = Len(nomfich) To 2 Step -1  
        If Mid(nomfich, i, 1) = "" Then Exit For  
    Next i  
    Chemin = Left(nomfich, i)  
    Fichier = Mid(nomfich, i + 1)  
    SelectionFichier = True  
End Function

Téléchargement


ATTENTION : dans la Sub ConvertiCvsXls il faut faire une modification,
Enlever le -1 sur la ligne
For i = 0 To UBound(TB) (-1)
Serveur 1 : Convertir CSV XLS.xls
Serveur réserve : Convertir CSV XLS.xls
Publié par lermite222 - Dernière mise à jour le 1 mars 2011 à 12:01 par lermite222
Ce document intitulé « Excel - Convertir fichier(s) CSV / XLS » issu de Comment Ça Marche Informatique (www.commentcamarche.net) est mis à disposition sous les termes de la licence Creative Commons. Vous pouvez copier, modifier des copies de cette page, dans les conditions fixées par la licence, tant que cette note apparaît clairement.




Sujet 16784 - Excel - Mises en forme conditionnelles illimitées

[ Voir ce sujet en ligne ] - [ Catégorie: Bureautique - Microsoft Office - Excel ]


Mises en Forme Conditionnelles Illimitées





Introduction


La Mise en Forme Conditionelle (ou MFC) permet d'appliquer, à une cellule ou à plusieurs cellules sélectionnées, différents formats qui changeront automatiquement en fonction de la valeur (ou du résultat obtenu par la formule) qu'elles contiennent.

Pour les versions d'Excel antérieures à 2007, le nombre de MFC est limité à 3. Ce qui est peu. Ayant vu beaucoup de demandes pour repousser cette limite, je me suis amusé à écrire une Macro qui permet de le faire, sans avoir besoin de la modifier. Elle Fonctionne donc à la demande selon les besoins.

Principe


La macro va récupérer les formats à appliquer dans une Feuille nommée MFC, la cellule A1 de cette même feuille est utilisée pour appliquer le format par défaut.
La macro est déclenchée par la saisie d'une cellule, elle applique la MFC sur cette cellule. Mais pour qu'elle applique les formats sur les cellules voulues et, pour ne pas à avoir à modifier la macro pour définir les différentes plages, on programme une MFC dans la cellule avec une Formule : =Ma_MFC.
Cette macro permet aussi d'effectuer des Formats selon des paliers de valeurs.

Code


Voici le code à placer dans le module ThisWorkbook.
Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range)
    Dim i As Integer, j As Long, Mfc As FormatCondition, c As Range, Ws1 As Worksheet
    On Error GoTo fin ' en cas de mauvaise manipulation, ça plante sur l'ordre suivant
    Application.EnableEvents = False
    Set Ws1 = Sheets("MFC")
    For i = 1 To Target.FormatConditions.Count
        Set Mfc = Target.FormatConditions(i)
        If UCase(Left(Mfc.Formula1, 7)) = "=MA_MFC" Then
            Ws1.Range("A1").Value = Target.Value
            Set c = Nothing
            For j = 2 To Ws1.Range("A65536").End(xlUp).Row
                If Ws1.Range("A" & j) = True Then
                    Set c = Ws1.Range("A" & j)
                    Exit For
                End If
            Next j
            If c Is Nothing Then Set c = Ws1.Range("A1")
            c.Copy
            Target.PasteSpecial (xlPasteFormats)
            Application.CutCopyMode = False
        End If
    Next i
    Application.EnableEvents = True
fin:
    On Error GoTo 0
End Sub

Fichier joint


Il est beaucoup plus simple de voir son utilisation avec un fichier exemple : Télécharger le fichier

Lire la suite

[VBA] Supprimer un mot dans une plage de cellule »
Publié par wilfried_42 - Dernière mise à jour le 3 novembre 2009 à 14:48 par marlalapocket




Sujet 18083 - [VBA] Supprimer un mot dans une plage de cellule

[ Voir ce sujet en ligne ] - [ Catégorie: Bureautique - Microsoft Office - Excel ]


Si on veut supprimer un mot dans une phrase il suffit de faire une petite macro qui supprime le mot recherché.
Là où ça se corse c'est que le mot recherché pourrait être, par exemple "LEMOT" ou "LeMot" ou "lemot" ou encore "LeMot" etc..
Cette petite macro résoud ce petit problème.

'A mettre en tête du module
Option Explicit
Option Compare Text


Sub SupprimerMot()
Dim Cel As Range, Plage As Range
Dim Mot As String
    Set Plage = Range("B2:B20") ' à adapter à la plage à parcourir.
    Mot = "LeMot" 'adapter au mot à rechercher et à supprimer
    'Pas nécessaire si le plage est petite
    Application.ScreenUpdating = False
    For Each Cel In Plage
        If Cel Like "*" & Mot & "*" Then
            Cel = Replace(Cel, Mot, "")
            'Pour enlever le double espace qui en résulte..
            Cel = Replace(Cel, "  ", " ")
        End If
    Next Cel
    Application.ScreenUpdating = True
End Sub

Lire la suite

[VBA] Tester une plage qui contient des cellules fusionnées »
Publié par lermite222 - Dernière mise à jour le 3 novembre 2009 à 13:03 par marlalapocket




Sujet 18089 - [VBA] Tester une plage qui contient des cellules fusionnées

[ Voir ce sujet en ligne ] - [ Catégorie: Bureautique - Microsoft Office - Excel ]


Il n’est pas évident de connaître, par exemple, le contenu d’une cellule située dans une plage qui contient des cellules simples et des cellules fusionnées surtout si les premières cellules des cellules fusionnées ne commencent pas sur la même colonne que la colonne testée.
Pour être plus clair, nous allons tester la colonne 5 (E) : supposons que des cellules d'une ligne soient fusionnées de B à F, pour cette ligne, le test doit donc se faire sur la colonne B et non E .
Le test consiste à rechercher un mot dans la colonne E et à supprimer la ligne correspondante si le mot est trouvé dans une des cellules de la colonne E.
Sub SupprimerligneAvecMerge()
Dim Lig As Long
Dim Col As Integer
Dim Mot As String
Dim Mg, TB
    'pour l'exemple, la colonne à tester =5
    Col = 5
    Mot = "LeMot" 'remplacer LeMot par celui que vous désirez chercher

    For Lig = Cells(65536, Col).End(xlUp).Row To 1 Step -1
        Set Mg = Cells(Lig, Col).MergeArea
        TB = Split(Mg.Address, ":")
        If Cells(Lig, TB(0)).Value = Mot Then
            Rows(Lig).Delete
        End If
    Next Lig
End Sub

Remarque : le test du mot prend la casse en compte, de ce fait : LeMot, lemot, LEMOT etc, sont considérés comme des mots différents, si vous ne voulez pas qu'ils soient considérés comme tel vous devrez adapter la macro ci-dessus avec celle de cette autre astuce

Lire la suite

[VBA] Recherche Find avec retour multiple »
Publié par lermite222 - Dernière mise à jour le 3 novembre 2009 à 13:03 par marlalapocket




Sujet 18696 - [VBA] Recherche Find avec retour multiple

[ Voir ce sujet en ligne ] - [ Catégorie: Bureautique - Microsoft Office - Excel ]



Une simple recherche Find vous retourne la première coordonnée trouvée.
Dans certaines circonstances il est nécessaire de connaître toutes les coordonnées des occurrences trouvées.
C'est ce que fait cette petite fonction.



Dans un module public


'Retourne toutes les adresses trouvées dans la recherche
'WkbN = nom du classeur, avec cette donnée la fonction peut être mise dans un xla
'WksN = nom de la feuille
'Plage = les coordonnées de la plage à parcourir.
'Retour dans le tableau donner en argument.
Function RechFind(ByVal Cle As String, ByVal WkbN As String, ByVal WksN As String, ByVal Plage As String, ByRef TBadress() As Variant) As Long
Dim Cherche, Ix As Long, PrAddress
    With Workbooks(WkbN).Sheets(WksN).Range(Plage)
        Set Cherche = .Find(Cle)
        If Not Cherche Is Nothing Then
            PrAddress = Cherche.Address
            Do
                ReDim Preserve TBadress(Ix)
                TBadress(Ix) = Cherche.Address
                Set Cherche = .FindNext(Cherche)
                Ix = Ix + 1
            Loop While Not Cherche Is Nothing And Cherche.Address <> PrAddress
        End If
    End With
    'nombre d'occurence(s) trouvée(s), Retour 0 si aucune occurence
    RechFind = Ix
    Set Cherche = Nothing 'Libére la mémoire occupée par l'objet.
End Function

Le corps de la fonction est séparé pour éventuellement être mis dans un classeur Xla.

Exemple d'appel par macro


Peu être mis dans un module du classeur "appelant"
Sub RechMulti()
Dim R As Long, TB()
Dim i As Integer
    R = RechFind("12*", ThisWorkbook.Name, "Feuil1", "B1:B500", TB())
    If R > 0 Then
        For i = 0 To R - 1 ' ou ubound(TB)
            'exemple
            Sheets("Feuil1").Cells(i + 4, 5) = Range(TB(i)).Row
        Next i
    End If
End Sub

Exemple d'appel par bouton


Private Sub CommandButton1_Click()
Dim R As Long, TB()
Dim i As Integer
    Range("E4:E20").ClearContents
    R = RechFind(Range("E2"), ThisWorkbook.Name, ActiveSheet.Name, Range("B1:B500").Address, TB())
    If R > 0 Then
        For i = 0 To R - 1 ' ou ubound(TB)
            'exemple
            Sheets("Feuil1").Cells(i + 4, 5) = Range(TB(i)).Row
        Next i
    End If
End Sub

Télécharger


Si vous souhaitez un exemple concret Vous pouvez télécharger le classeur exemple

Lire la suite

[VBA] Message pour faire patienter l'utilisateur »
Publié par lermite222 - Dernière mise à jour le 22 septembre 2009 à 10:33 par irongege




Sujet 18700 - [VBA] Message pour faire patienter l'utilisateur

[ Voir ce sujet en ligne ] - [ Catégorie: Bureautique - Microsoft Office - Excel ]


Petite application pour afficher un message d'attente quand un processus est relativement long.
Et en annexe enlever le cadre de l'userForm



Introduction


Un message "défilant" et une icône "animée" sont disponibles.



Toutes les propriétés sont paramétrables.
Pour changer d'image il faut avoir une image Gif décomposée et
Changer ou ajouter une ListImage avec vos images.
Il faut aussi modifier la Const NbImage en fonction du nombre
d'images qu'il y aura dans votre ListImage.

L'UserForm


Dans UserForm nommer Sablier
Option Explicit
Dim TempsS As Long
Dim TempsT As Long
Dim NumImg As Byte
Dim LG3 As Integer
Dim Deb As Integer


Private Sub UserForm_Activate()
    Animation
End Sub

Private Sub UserForm_Initialize()
'------------------------------------------------------------------
    'Les données par défaut
    If TxtLab = "" Then
        TxtLab = "Traitement en cour, veuillez patienter svp..."
    End If
    If VitesseS = 0 Then
        VitesseS = 3500
    End If
    If VitesseT = 0 Then
        VitesseT = 1000
    End If
'------------------------------------------------------------------
    OteTitleBarre Me.Caption, False
    Me.Height = 43
    NumImg = 1
    ImgSablier.Picture = ListSablier.ListImages(NumImg).Picture
    LabSablier.Caption = TxtLab
    LG3 = LabSablier.Width
    Animer = True
        
End Sub
Sub Animation()
    While Animer
        If VitesseS <> -1 Then
            TempsS = TempsS + 1
            If TempsS = VitesseS Then
                TempsS = 0
                NumImg = NumImg + 1: If NumImg > NbImage Then NumImg = 1
                ImgSablier.Picture = ListSablier.ListImages(NumImg).Picture
            End If
        End If
        If VitesseT <> -1 Then
            TempsT = TempsT + 1
            If TempsT = VitesseT Then
                TempsT = 0
                If Abs(Deb) > LG3 Then Deb = Frame1.Width
                LabSablier.Left = Deb
                Deb = Deb - 1
            End If
        End If
        DoEvents
    Wend
    Unload Me
End Sub

Le module public


Option Explicit

'Mettre à false pour fermer l'UF
Public Animer As Boolean

'Le texte qui défile dans l'UF,
Public TxtLab As String

'Pour adapter la vitesse de défilement du sablier
Public VitesseS As Integer

'Pour adapter la vitesse de défilement du texte
Public VitesseT As Integer

Public Const NbImage = 12

'----------------------------------------------------------------
'Pour enlever la barre de titre du UF
Public Type RECT
        Left As Long
        Top As Long
        Right As Long
        Bottom As Long
End Type

Const GWL_STYLE = (-16)
Const WS_CAPTION = &HC00000
Const SWP_FRAMECHANGED = &H20

Public Declare Function FindWindowA Lib "user32" _
        (ByVal lpClassName As String, ByVal lpWindowName As String) As Long
        
Public Declare Function GetWindowRect Lib "user32" _
        (ByVal hwnd As Long, lpRect As RECT) As Long
        
Public Declare Function GetWindowLong Lib "user32" Alias _
        "GetWindowLongA" (ByVal hwnd As Long, ByVal nIndex As Long) As Long

Public Declare Function SetWindowLong Lib "user32" Alias _
        "SetWindowLongA" (ByVal hwnd As Long, ByVal nIndex As Long, _
        ByVal dwNewLong As Long) As Long

Public 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 wFlags As Long) As Long
Public Type POINTAPI
        X As Long
        Y As Long
End Type
Public m_CursorPos As POINTAPI
Public Declare Function GetCursorPos Lib "user32" (lpPoint As POINTAPI) As Long
Public Declare Function WindowFromPoint Lib "user32" (ByVal xPoint As Long, ByVal yPoint As Long) As Long
Public Afficher As Boolean

Sub OteTitleBarre(stCaption As String, pbVisible As Boolean)
Dim vrWin As RECT
Dim style As Long
Dim lHwnd As Long
'- Recherche du handle de la fenêtre par son Caption
    lHwnd = FindWindowA(vbNullString, stCaption)
    If lHwnd = 0 Then
        MsgBox "Handle de " & stCaption & " Introuvable", vbCritical
        Exit Sub
    End If
    
    GetWindowRect lHwnd, vrWin
    style = GetWindowLong(lHwnd, GWL_STYLE)
    If pbVisible Then
        SetWindowLong lHwnd, GWL_STYLE, style Or WS_CAPTION
    Else
        SetWindowLong lHwnd, GWL_STYLE, style And Not WS_CAPTION
    End If
    SetWindowPos lHwnd, 0, vrWin.Left, vrWin.Top, vrWin.Right - vrWin.Left, _
            vrWin.Bottom - vrWin.Top, SWP_FRAMECHANGED
End Sub

Exemple d'emploi


Sur une feuille Excel, deux boutons.
Dans le module de la feuille.
Private Sub CommandButton1_Click()
    'Démarrer
    Sablier.Show vbModeless
End Sub

Private Sub CommandButton2_Click()
    'Terminer
    Animer = False
End Sub

Téléchargement


Vous pouvez télécharger Le classeur exemple Sablier.xls

Lire la suite

Erreur système : Microsoft Visual Basic »
Publié par lermite222 - Dernière mise à jour le 2 novembre 2009 à 21:30 par aquarelle




Sujet 19329 - Erreur système : Microsoft Visual Basic

[ Voir ce sujet en ligne ] - [ Catégorie: Bureautique - Microsoft Office - Excel ]



En ouvrant Excel, vous rencontrez un message d'erreur.
Une fenêtre au nom de "Microsoft Visual Basic" s'ouvre avec le contenu suivant :

Erreur système &H80004005 (-2147467259). Erreur non spécifiée 


Pour corriger le problème, suivez les instructions suivantes :

En relançant Excel, vous ne devriez plus rencontrer de message d'erreur.

Merci à takitaka pour sa réponse dans le forum.

Lire la suite

Supprimer les doublons dans une colonne Excel »
Publié par crapoulou - Dernière mise à jour le 22 septembre 2009 à 10:32 par irongege




Sujet 19343 - Supprimer les doublons dans une colonne Excel

[ Voir ce sujet en ligne ] - [ Catégorie: Bureautique - Microsoft Office - Excel ]



Pour extraire les doublons dans une colonne Excel :

La seule chose est que si votre colonne n'est pas épurée au niveau du contenu (c'est-à-dire qu'il y a des espaces qui n'ont rien à faire là) il peut y avoir des problèmes.

Merci à David pour sa solution dans le forum.

Lire la suite

Excel - Signature numérique »
Publié par crapoulou - Dernière mise à jour le 22 septembre 2009 à 10:30 par irongege




Sujet 21009 - Excel - Signature numérique

[ Voir ce sujet en ligne ] - [ Catégorie: Bureautique - Microsoft Office - Excel ]



L'utilisation de code VBA nécessite un niveau de sécurité faible voire moyen, mais dans ce cas il faut activer les macros à chaque ouverture de fichier.
Il est possible de remédier à ces désagréments en créant sa propre signature numérique pour authentifier le codage des macros enregistrées.

Création de la signature


Dans la fenêtre de l'assistant


Dans le champ "Nom de votre certificat", saisir un nom simple que l'on souhaite donner à sa signature, comme son pseudo par exemple.

Lorsque le message de confirmation du certificat s'affiche, cliquer sur OK.

Maintenant il est possible de signer nos codes


Sous Environnement Microsoft Excel 2000 et 2003
(A l'ouverture, activer les macros, Outils > Macros > Sécurité > Onglet "Niveau de sécurité" > cocher le niveau moyen).

Sécurité améliorée


Il est possible d'augmenter la sécurité au niveau élevé (Outils > Macros > Sécurité > cocher Élevé).

Enregistrer et fermer le fichier.

A l'ouverture du premier fichier utilisant la signature numérique une boite de dialogue proposera d'activer les macros :


Sous environnement Microsoft Excel 2007

Cette procédure a été rédigée par Mike-31.

Lire la suite

Excel - Effacer le contenu de certaines cellules. »
Publié par gbinforme - Dernière mise à jour le 3 mai 2010 à 16:51 par spe2d




Sujet 21103 - Excel - Effacer le contenu de certaines cellules.

[ Voir ce sujet en ligne ] - [ Catégorie: Bureautique - Microsoft Office - Excel ]


Problème


Voici mon problème : J'ai 6 cellules comportant des listes déroulantes. Les 6 sont sélectionnées à chaque fois. J'aimerais pouvoir avoir un bouton pour réinitialiser les 6 en même temps c'est à dire qu'elles apparaissent vides (bien sûr mes listes restent toujours en place).
Avez vous une solution à me proposer, voici un lien vers un exemple de mon fichier

Merci d'avance.

Solution


Voici un code pour effacer tes cellules en conservant les listes de validations

Private Sub CommandButton1_Click()
[A14:F14].ClearContents
End Sub




Merci à Mike-31 sur le forum pour cette astuce.

Lire la suite

Différence entre dates avec la fonction DATEDIF »
Publié par flo-91 - Dernière mise à jour le 2 novembre 2009 à 11:57 par Jeff




Sujet 22460 - Différence entre dates avec la fonction DATEDIF

[ Voir ce sujet en ligne ] - [ Catégorie: Bureautique - Microsoft Office - Excel ]


La fonction DATEDIF n'est pas documentée dans Excel, mais par contre sur CCM vous pouvez trouver les possibilités offertes. En voici un résumé.
 

La syntaxe


=DATEDIF(date début;date fin;type de calcul)

Exemple


 
En A1 : 05/02/2007
En B1 : 02/02/2009

Si vous combinez 1, 4, 6 vous obtenez => 1 an 11 mois 28 jours.
 

Utilisation


Pour utiliser cette fonction, assurez vous que la date fin n'est pas inférieure à date début car sinon vous aurez l'erreur #NOMBRE!. Il en sera de même si votre type de calcul n'est pas correct.

Comme vous pouvez le voir, vous pouvez vous en servir pour calculer un age précis aussi bien que pour gérer un échéancier.

Dans tous les cas, vous obtenez un nombre qu'il faut qualifier en fonction du paramètre : années, mois, jours.

Lire la suite

Tutoriel Fonction RECHERCHEV »
Publié par gbinforme - Dernière mise à jour le 12 novembre 2009 à 10:49 par spe2d




Sujet 24720 - Tutoriel Fonction RECHERCHEV

[ Voir ce sujet en ligne ] - [ Catégorie: Bureautique - Microsoft Office - Excel ]



Marche à suivre RECHERCHEV (Excel 2003 & Excel 2007)

Les références



Excel 2007: La définition du nom se fait via le menu Formules.

Emplacement où les données trouvées vont apparaitre


Les formules


La syntaxe de base de la fonction RECHERCHEV est:
=RECHERCHEV(valeur_recherchée;table_matrice;no_index_col;valeur_proche)
Note: Dans la formule on met le paramètre à FAUX si on veut rechercher la valeur exacte (#N/A si non trouvé), on le met à VRAI si on veut la valeur inférieure ou égale la plus proche, et dans ce cas la liste de valeur doit être triée.
Si ce paramètre est omis sa valeur par défaut est VRAI

Lire la suite

Tutoriel Fonction RECHERCHEH »
Publié par Ricky38 - Dernière mise à jour le 3 mai 2010 à 16:52 par spe2d




Sujet 24722 - Tutoriel Fonction RECHERCHEH

[ Voir ce sujet en ligne ] - [ Catégorie: Bureautique - Microsoft Office - Excel ]



Marche à suivre RECHERCHEH (Excel 2003 & Excel 2007)

Les références



Excel 2007: La définition du nom se fait via le menu Formules.

Emplacement où les données trouvées vont apparaitre


Les formules


La syntaxe de base de la fonction RECHERCHEH est:
=RECHERCHEH(valeur_recherchée;table_matrice;no_index_lig;valeur_proche)
Note: Dans la formule on met le paramètre à FAUX si on veut rechercher la valeur exacte (#N/A si non trouvé), on le met à VRAI si on veut la valeur inférieure ou égale la plus proche, et dans ce cas la liste de valeur doit être triée.
Si ce paramètre est omis sa valeur par défaut est VRAI

Lire la suite

[VBA] Un formulaire multilingue et collections d'objets »
Publié par Ricky38 - Dernière mise à jour le 3 mai 2010 à 16:52 par spe2d




Sujet 28144 - VBA - Un formulaire multilingue et collections d'objets

[ Voir ce sujet en ligne ] - [ Catégorie: Bureautique - Microsoft Office - Excel ]


Cette démo a comme base une enquête de satisfaction clients.
Deux langues sont développées (Français et Anglais) mais il y a possibilité d'en ajouter (ou de les modifier)
Pour avoir accès au code vous devez ouvrir le classeur avec les macros désactivées.
Les titres sont à modifier dans la feuille Langue, colonnes J, K,...
Vous pouvez aussi modifier le Logo en changeant l'image du contrôle Image1
Pour gérer le nombre de contrôles assez élevé, des collections d'objets sont employées.

centre


Télécharger un classeur démo <Excel 97 - 2003>
Serveur 1 : Enquête client.xls
Serveur réserve : Enquête client.xls
Publié par lermite222 - Dernière mise à jour le 3 mars 2011 à 14:04 par lermite222
Ce document intitulé « VBA - Un formulaire multilingue et collections d'objets » issu de Comment Ça Marche Informatique (www.commentcamarche.net) est mis à disposition sous les termes de la licence Creative Commons. Vous pouvez copier, modifier des copies de cette page, dans les conditions fixées par la licence, tant que cette note apparaît clairement.




Sujet 28165 - Modèle facturation

[ Voir ce sujet en ligne ] - [ Catégorie: Bureautique - Microsoft Office - Excel ]



Il n'est pas possible de faire un modèle de facturation qui conviendrait à tous les cas de figure, cet exemple sert surtout de fil conducteur pour :

centre


centre


Téléchargement du classeur démo :
Serveur 1 : Modèle Facturation.xls
Serveur réserve : Modèle Facturation.xls
Publié par lermite222 - Dernière mise à jour le 2 mars 2011 à 19:16 par lermite222
Ce document intitulé « Modèle facturation » issu de Comment Ça Marche Informatique (www.commentcamarche.net) est mis à disposition sous les termes de la licence Creative Commons. Vous pouvez copier, modifier des copies de cette page, dans les conditions fixées par la licence, tant que cette note apparaît clairement.




Sujet 28449 - [VBA VB6] Quand le test DIR(Répertoir) plante !

[ Voir ce sujet en ligne ] - [ Catégorie: Bureautique - Microsoft Office - Excel ]

Le test le plus simple pour tester si le chemin d'un répertoir est valide c'est bien évidemment...
    If Dir(MonRepertoir) = "" Then
        'Le répertoir n'existe pas ou n'est pas bien libellé
    End If


Sauf que... Si le chemin du répertoir est bien renseigner mais qu'il est vide Dir renvoi aussi "", mais quelque fois il peut être nécessaire de savoir si le répertoir existe, même s'il est vide.
Dans cette circonstante ont peu remplacer ce test par...

Dans un module général
Public Function TestSiVide(Rep As String) As Long
Dim Obj, RepP, F
    On Error GoTo Faute 'Si le répertoir n'est pas trouvé
    Set Obj = CreateObject("Scripting.FileSystemObject")
    Set RepP = Obj.Getfolder(Rep)
    Set F = RepP.Files
    TestSiVide = F.Count
    Set RepP = Nothing
    Set F = Nothing
Sortie:
    Set Obj = Nothing
    Exit Function
Faute:
    TestSiVide = -1
    Resume Sortie 'Le Resume est nécessaire pour éviter des noeux dans la pile.
End Function


Et dans le corps du code...
Sub Test(Rep as String)
Dim Nb As Long, MonRepertoir as String
    If Rep <> "" Then
        MonRepertoir = Rep & IIf(Right(Rep, 1) <> "\", "\", "") ' Eventuellement ajouter le slasch inverse
        Nb = TestSiVide(MonRepertoir ) 'Renvoi -1 si erreur de répertoir (erreur 76)
        If Nb = 0 Then
            MsgBox "Le répertoir sélectionné ne contient pas de fichier ", vbCritical, "Sélection répertoir"
        ElseIf Nb = -1 Then
            MsgBox "Le répertoir sélectionné n'est pas/plus valide", vbCritical, "Sélection répertoir"
        Else
             MsgBox "Le répertoir sélectionné est valide"
        End If
    End If
End Sub


Lire la suite

[VBA] Une liste PopUP + positionnement + ôter cadre UF »
Publié par lermite222 - Dernière mise à jour le 1 juin 2010 à 13:13 par lermite222




Sujet 28740 - VBA - Une liste PopUP + positionnement + ôter cadre UF

[ Voir ce sujet en ligne ] - [ Catégorie: Bureautique - Microsoft Office - Excel ]



Cet exemple implémente les fonctions décrite dans le titre.

Centre


Appel des API pour enlever le cadre d'un UserForm.
Positionner l'Userform à proximité de le cellule appelante.
Une listeBoxe Checked avec sélection multiple.

Télécharger classeur <Excel 97 - 2003>
Serveur 1 : List PopUp.xls
Serveur réserve : List PopUp.xls
Publié par lermite222 - Dernière mise à jour le 3 mars 2011 à 13:34 par lermite222
Ce document intitulé « VBA - Une liste PopUP + positionnement + ôter cadre UF » issu de Comment Ça Marche Informatique (www.commentcamarche.net) est mis à disposition sous les termes de la licence Creative Commons. Vous pouvez copier, modifier des copies de cette page, dans les conditions fixées par la licence, tant que cette note apparaît clairement.




Sujet 28873 - [VBA] Excel :Recherche par élimination sur une feuille

[ Voir ce sujet en ligne ] - [ Catégorie: Bureautique - Microsoft Office - Excel ]



La fonction primaire de cette application est, comme le titre l'indique,la sélection sur une feuille. Mais elle est également un bon préliminaire à une application client ou facturation et bien d'autres encore.

Cette démonstration met en oeuvre :

Mais la fonction la plus élaborée est le filtre actif sur la feuille Liste Fiche.
Elle permet la sélection instantanée (ce qui n'est pas possible avec Excel) des lignes suivant le filtre appliqué.
Ce serait difficile de tout expliquer sans modèle.

Aussi, vous pouvez télécharger un classeur exemple.
Toutes le possibilités sont documentées dans l'application.

Des lignes d'aide sont également disponibles dans le code.

Note : quand vous avez téléchargés le fichier il a un autre nom, il faut le renommer "Publipostage Fiche.xls" pour ne pas avoir d'erreur.

Lire la suite

Création classeur de macros personnalisées 2007 »
Publié par lermite222 - Dernière mise à jour le 10 août 2010 à 13:47 par lermite222




Sujet 28980 - Création classeur de macros personnalisées 2007

[ Voir ce sujet en ligne ] - [ Catégorie: Bureautique - Microsoft Office - Excel ]

C'est une procédure qui permet de créer le classeur pour regrouper ses macros et fonctions personnelles dans un fichier commun qui est ouvert au démarrage d'Excel. Ainsi cela permet d'utiliser ses macros depuis n'importe quel classeur même s'il ne comporte pas de macros en son sein.

Vous ouvrez Excel, sans classeur et vous suivez la procédure suivante :

Lire la suite

[VBA Excel] Séparer une adresse postale dans plusieurs colonnes »
Publié par gbinforme - Dernière mise à jour le 12 juillet 2010 à 23:38 par gbinforme




Sujet 29629 - [VBA Excel] Séparer une adresse postale dans plusieurs colonnes

[ Voir ce sujet en ligne ] - [ Catégorie: Bureautique - Microsoft Office - Excel ]



Introduction


Cette fonction sépare des adresses en plusieurs colonnes dans beaucoup de configurations.
Elle permet de sélectionner avec ou sans boite postale, d'afficher avec ou sans boite postale.
Les libellés des adresses peuvent indifféremment êtres au format,

Résultat avec la BP sélectionnée et inversion de la rue et du numéro

Résultat sans la BP et sans inversion de colonnes


Les différentes options sont commentées dans le code.

Code


A mettre dans un module public.
Option Explicit  

Sub SepareAdresse()  
Dim WkSource As Worksheet, WkDest As Worksheet  
Dim Colsource As Integer, LigSource As Integer, Lig As Long, UB As Byte  
Dim ColDest As Integer, LigDest As Long, TB, i As Integer, e As Integer  
Dim OrdreDest()  
    Set WkSource = Sheets("Feuil1") 'Feuille où se trouve les adresses à séparer  
    'Note : si les adresses sont dans un autre classeur vous pouvez initialiser par  
    'Set WkSource = Workbooks("ClasseurSource.xls").Sheets("Feuil1")  
    Colsource = 2 'colonne où se trouve les adresses à séparer - ici "B"  
    LigSource = 4 'Première ligne où se trouve les adresses à séparer - ici "4"  
      
    Set WkDest = Sheets("Feuil2") 'Feuille où mettre les données séparées  
    'Note : si les destinations sont dans un autre classeur vous pouvez initialiser par  
    'Set WkDest = Workbooks("ClasseurDest.xls").Sheets("Feuil2")  
    ColDest = 3 'Première colonne où mettre les adresses séparées - ici "C"  
    LigDest = 3 'Première ligne où mettre les adresses séparées  
      
    'Changer l'ordre des cellules  
    'Exemple pour avoir  
    'rue des Abeilles | 143 | Bt 3 | 65677 | LaVille  
    OrdreDest = Array(1, 0, 2, 3, 4)  
      
    'Dans l'exemple nous ne modifierons pas l'ordre des colonnes,  
    'Si il y a des adresses avec et sans boite postale, sélectionnez 4 colonnes  
    OrdreDest = Array(0, 1, 2, 3, 4)  
    'S'il n' y a jamais de BP, mettre une colonne en moins  
    'OrdreDest = Array(0, 1, 2, 3)  
      
    With WkSource  
        For Lig = LigSource To .Cells(65536, Colsource).End(xlUp).Row  
            On Error GoTo Erreur  ' au cas où une adresse serait invalide  
            TB = Split(.Cells(Lig, Colsource), " ")  
            UB = UBound(TB)   
            For i = 1 To UB  
                If Not IsNumeric(TB(i + 1)) Then  
                    If i > 1 Then TB(1) = TB(1) & " " & TB(i)  
                Else  
                    Exit For  
                End If  
            Next i  
            If UBound(TB) < 4 Then  
                ReDim Preserve TB(4)  
                TB(4) = TB(3): TB(3) = TB(2)  
            End If  
            If TB(i + 1) < 300 Then  'il y a une boite postale  
                If UBound(OrdreDest) = 4 Then  
                    TB(2) = TB(i) & " " & TB(i + 1)  
                    TB(3) = TB(i + 2): TB(4) = TB(i + 3)  
                Else 'mais il ne faut pas l'afficher  
                    TB(2) = TB(UBound(TB) - 1): TB(3) = TB(UBound(TB))  
                End If  
            Else ' pas de boite postale  
                If i > 1 Then TB(1) = TB(1) & " " & TB(i)  
                If UBound(OrdreDest) = 4 Then 'la BP est optionnelle mais n'est pas présente  
                    TB(2) = ""  
                    TB(3) = TB(UBound(TB) - 1): TB(4) = TB(UBound(TB))  
                Else  
                    TB(2) = TB(UBound(TB) - 1): TB(3) = TB(UBound(TB))  
                End If  
            End If  
                For e = 0 To UBound(OrdreDest)   
                    WkDest.Cells(LigDest, ColDest).Offset(, OrdreDest(e)) = TB(e)  
                Next e  
                LigDest = LigDest + 1  
Passe:  
        Next Lig  
    End With  
Exit Sub  
Erreur:  
    Resume Passe  
End Sub

Remarque


Au cas ou vous auriez une configuration de l'adresse qui n'est pas reprise dans cet exemple veuillez mettre un commentaire avec l'exemple de l'adresse à prendre en compte, je verrais pour l'adjoindre à la fonction.

Lire la suite

[VBA Excel] Calculatrice »
Publié par lermite222 - Dernière mise à jour le 24 septembre 2010 à 09:27 par lermite222




Sujet 30400 - VBA Excel - Calculatrice

[ Voir ce sujet en ligne ] - [ Catégorie: Bureautique - Microsoft Office - Excel ]


Je sais.. je sais, des calculatrices il y en a à profusion sur la toile, mais cette question revenant périodiquement sur le forum j'en ai fait une vite fait.

Met en exergue..


Mais comme qui peut le plus peut aussi le moins, 6+6 ça va aussi.

Le code étant relativement long je ne l'ai pas mis sur l'astuce.

Télécharger l'exemple (Excel 97 - 2003)
Serveur 1 : Calculatrice.xls
Serveur réserve Calculatrice.xls
Publié par lermite222 - Dernière mise à jour le 28 février 2011 à 19:23 par lermite222
Ce document intitulé « VBA Excel - Calculatrice » issu de Comment Ça Marche Informatique (www.commentcamarche.net) est mis à disposition sous les termes de la licence Creative Commons. Vous pouvez copier, modifier des copies de cette page, dans les conditions fixées par la licence, tant que cette note apparaît clairement.




Sujet 30451 - Plusieurs fenêtres Excel simultanées

[ Voir ce sujet en ligne ] - [ Catégorie: Bureautique - Microsoft Office - Excel ]

Quand on travaille sur plusieurs fichiers, ils sont généralement dans le même espace de travail, à l'intérieur de la même fenêtre Excel, dans laquelle elles sont soit réorganisées (Mosaïque, horizontal, vertical, cascade) soit superposées.

On peut vouloir, pour des raisons diverses (notamment quand on travaille avec 2 écrans), disposer de deux ou plusieurs fenêtres Excel distinctes.

Pour ce faire, une fois le premier fichier ouvert, il faut relancer Excel et y ouvrir l'autre fichier.
* On peut bien entendu répéter la procédure.

NB : Procédure proposée le 24/07/09 à 09:24 par jaaloor. Merci à lui !

Lire la suite

[EXCEL] Classeur protégé par mot de passe élaboré. »
Publié par Raymond PENTIER - Dernière mise à jour le 9 décembre 2010 à 15:55 par Raymond PENTIER




Sujet 30633 - EXCEL - Classeur protégé par mot de passe élaboré.

[ Voir ce sujet en ligne ] - [ Catégorie: Bureautique - Microsoft Office - Excel ]



Ce classeur peut servir de base de départ pour une application qui nécessite une gestion de sécurité élevée.
Le code est prêt pour démarrer une nouvelle application, la modification du code qui gère les codes nécessite une connaissance approfondie du VBA, notamment les modules de classe, mais si vous employez les codes comme décrit sur la page "Accueil", une connaissance de base du VBA est suffisante.


Bien entendu, toute les protections possible peuvent êtres détournées, toutefois, dans ce modèle, ce n'est pas accessible au premier venu. Lors du démarrage de l' appli TOUT est verrouillé, même si vous désactivez les macros. (Si vous parvenez à le "Cracker" sans artifice démesurés, veuillez me prévenir pour qu'éventuellement je puisse y remédier.)

Cet appli comprend :

ATTENTION : Il y a un bug dans la démo qui permet à tout les utilisateurs de voir toutes les feuilles.
Pour y remédier, chercher le Module Code >> la Sub ChangerUtilisateur() et modifier la ligne..
Sheets(F).Visible = False
par
Sheets(F).Visible = xlSheetVeryHidden


Téléchargement classeur démo :
Serveur 1 : CodePasse.xls (1.05 Mo)
Serveur réserve : CodePasse.xls (1.05 Mo)
Publié par lermite222 - Dernière mise à jour le 20 mars 2011 à 16:59 par lermite222
Ce document intitulé « EXCEL - Classeur protégé par mot de passe élaboré. » issu de Comment Ça Marche Informatique (www.commentcamarche.net) est mis à disposition sous les termes de la licence Creative Commons. Vous pouvez copier, modifier des copies de cette page, dans les conditions fixées par la licence, tant que cette note apparaît clairement.




Sujet 30665 - EXCEL - Liste d'images dans une feuille

[ Voir ce sujet en ligne ] - [ Catégorie: Bureautique - Microsoft Office - Excel ]



Voila une appli qui liste toutes les images *.JPG d'un répertoire, avec la possibilité d'inclure les sous-répertoires.

C'est la façon la plus simple d'incorporer des images dans une feuille.


L'affichage est modulable en fonction des données établies au préalable dans la feuille Accueil.

Il est évident que vous pouvez supprimer la feuille accueil à condition d'initialiser les variables avec les valeurs adéquates.

Une autre version plus élaborée sera disponible dans un tuto ultérieur, mais avec des PictureBox en remplacement des Images, ce qui permet la saisie des événements souris.

Télécharger un classeur démo.
Serveur 1 : Liste image jpg V2.xls
Serveur réserve : Liste image jpg V2.xls

La version 3 initialise les commentaires avec l'image "zoomée"

Télécharger la V3
Serveur 1 : Liste image jpg V3.xls
Serveur réserve : Liste image jpg V3.xls
Publié par lermite222 - Dernière mise à jour le 28 février 2011 à 18:54 par lermite222
Ce document intitulé « EXCEL - Liste d'images dans une feuille » issu de Comment Ça Marche Informatique (www.commentcamarche.net) est mis à disposition sous les termes de la licence Creative Commons. Vous pouvez copier, modifier des copies de cette page, dans les conditions fixées par la licence, tant que cette note apparaît clairement.




Sujet 30872 - EXCEL - Démo - Tirer 1, 2 ou 3 dés

[ Voir ce sujet en ligne ] - [ Catégorie: Bureautique - Microsoft Office - Excel ]


Ce classeur n'a probablement pas beaucoup d'intérêt dans sa finalité.
Il offre la possibilité de tirer de un à trois dés, simultanément ou en cascade.


Il est destiné à expliquer l'emploi de :

Télécharger un classeur Excel 97-2003
Serveur 1 : Trois dés
Serveur réserve : Trois dés
Publié par lermite222 - Dernière mise à jour le 28 février 2011 à 19:00 par lermite222
Ce document intitulé « EXCEL - Démo - Tirer 1, 2 ou 3 dés » issu de Comment Ça Marche Informatique (www.commentcamarche.net) est mis à disposition sous les termes de la licence Creative Commons. Vous pouvez copier, modifier des copies de cette page, dans les conditions fixées par la licence, tant que cette note apparaît clairement.




Sujet 30932 - VBA - Ajouter ComboBox et le code qui va avec.

[ Voir ce sujet en ligne ] - [ Catégorie: Bureautique - Microsoft Office - Excel ]


Code relativement simple et qui ne nécessite pas d'explication complémentaire.
Coller ces deux sub dans un module général (Module1 par exemple).

Option Explicit   

Sub CréerCombo(Lier As Range, Optional Sh As Worksheet, Optional Emplacement As Range)   
Dim Obj As Object   
Dim code As String   
Dim Ix As Integer, Num As String   
    If Sh Is Nothing Then   
        Set Sh = ActiveSheet   
    End If   
    Sh.Select   
    Ix = ActiveSheet.OLEObjects.Count + 1   
    Num = "0" & Ix: Num = Right(Num, 2) 'Pour jusque 99 boutons   
    If Emplacement Is Nothing Then   
        'emplacement par défaut   
        Set Emplacement = ActiveCell   
    End If   
'crée le bouton   
    With Emplacement   
    Set Obj = ActiveSheet.OLEObjects.Add(ClassType:="Forms.Combobox.1", _   
    Link:=False, DisplayAsIcon:=False, Left:=.Left, Top:=.Top, Width:=.ColumnWidth * 5.65, Height:=.RowHeight)   
    Obj.Name = "ComboB_" & Num   
    End With   

'propriétés du combo   
    With ActiveSheet.OLEObjects(Ix)   
        .Placement = xlMoveAndSize   
        .PrintObject = True   
        .ListFillRange = Lier.Address   
    End With   

'Le texte de la macro   
    code = vbCrLf & "Private Sub ComboB_" & Num & "_Change()" & vbCrLf   
    code = code & "    MsgBox ""Vous avez sélectionner la ligne "" & ComboB_" & Num & ".Text , ,""ComboB_" & Num & """" & vbCrLf   
    code = code & "End Sub"   

'Ajoute la macro en fin de module feuille   
    With ActiveWorkbook.VBProject.VBComponents(ActiveSheet.Name).CodeModule   
        .insertlines .CountOfLines + 1, code   
    End With   
End Sub   


Télécharger un exemple en Excel 2007 ou >
Serveur 1 : Ajouter Combo et code.xlsm
Serveur réserve : Ajouter Combo et code.xlsm
Publié par lermite222 - Dernière mise à jour le 28 février 2011 à 18:58 par lermite222
Ce document intitulé « VBA - Ajouter ComboBox et le code qui va avec. » issu de Comment Ça Marche Informatique (www.commentcamarche.net) est mis à disposition sous les termes de la licence Creative Commons. Vous pouvez copier, modifier des copies de cette page, dans les conditions fixées par la licence, tant que cette note apparaît clairement.




Sujet 31279 - [VBA] Ajouter des contrôles dynamiquement dans un Userform

[ Voir ce sujet en ligne ] - [ Catégorie: Bureautique - Microsoft Office - Excel ]

Pour créer le support de cette démo j'ai employé mon exemple de la calculatrice mais en créant tous les contrôles de façon dynamique.

Lorsque vous créez des contrôles de façon dynamique sur un UF, Excel ne reconnaît pas les noms des contrôles. Ce qui revient à dire que les événements générés par vos contrôles ainsi que leurs propriétés
ne seront pas accessibles avec les noms que vous leur attribuez. Par exemple, vous créez un bouton avec le code suivant :
Set Bouton = Me.Controls.Add("Forms.CommandButton.1", "Bt" & i, True)
Le nom du bouton sera (en supposant que i = 1 ) BT1
Mais l'événement Private Sub BT1_Click() ne sera jamais généré. Excel ne connaîtra que Bouton. Pour y remédier il faut employer des collections d'objets pour les propriétés et des collections de classe pour les événements. Les collections d'objets contiennent non seulement le contrôle mais également une clé qui permet de le référencer. En initialisant la propriété Tag des contrôles avec l'index souhaiter la collection de classe pourra renvoyer un index ce qui permet aussi de savoir quel contrôle à été le sujet de cet événement.

Il n'existe aucun contrôle dans le design de l'UserForm. Tous les contrôles de la calculatrice sont créés dynamiquement, y compris les Frames Container. La démo donne aussi le moyen d' incorporer les boutons dans les frames


Il faut déjà avoir une certaine maîtrise du VBA pour comprendre le mécanisme de ces collections,
mais si vous avez un problème de compréhension ou un bug à signaler vous pouvez me joindre par MP.

Téléchargement :
Serveur 1 : Ajouter Control UserForm.xls
Publié par lermite222 - Dernière mise à jour le 20 mars 2011 à 23:13 par Jeff
Ce document intitulé « [VBA] Ajouter des contrôles dynamiquement dans un Userform » issu de Comment Ça Marche Informatique (www.commentcamarche.net) est mis à disposition sous les termes de la licence Creative Commons. Vous pouvez copier, modifier des copies de cette page, dans les conditions fixées par la licence, tant que cette note apparaît clairement.




Sujet 32220 - VBA - Dernière ligne non vide [Toutes versions]

[ Voir ce sujet en ligne ] - [ Catégorie: Bureautique - Microsoft Office - Excel ]

« PrécédentSuivant »
Sommaire

VBA - Dernière ligne non vide [Toutes versions]


Entre les versions 2003 et 2007, le nombre de lignes que peut atteindre une feuille excel a considérablement évolué. De ce fait, les codes VBA tels que :
- versions < 2007 :
Dim DernLigne As Long 
DernLigne = Range("A65536").End(xlUp).Row

- depuis 2007 :
Dim DernLigne As Long 
DernLigne = Range("A1048576").End(xlUp).Row

empêchent la portabilité de votre classeur d'une version vers l'autre.

Dans tous les cas, il convient dorénavant d'écrire :
[toutes versions]
Dim DernLigne As Long 
DernLigne = Columns(1).Find("*", , , , xlByColumns, xlPrevious).Row

ou :
Dim DernLigne As Long 
DernLigne = Range("A" & Rows.Count).End(xlUp).Row

Vous serez également confrontés un jour au même problème en ce qui concerne les colonnes... Vous pourrez utiliser ce code (donné ici à titre d'exemple, il en existe d'autres syntaxes) :
Dim DernCol As Integer 
DernCol = Cells(1, Cells.Columns.Count).End(xlToLeft).Column


Les codes donnés ici, concernent la dernière ligne non vide de la colonne A (Columns(1).Find("*", , , , xlByColumns, xlPrevious).Row , Range("A" & Rows.Count).End(xlUp).Row) et la dernière colonne dont la 1ère ligne est non vide (Cells(1, Cells.Columns.Count).End(xlToLeft).Column). Vous pouvez bien entendu les adapter en changeant l'élément identifié en gras.
Publié par pijaku - Dernière mise à jour le 12 juillet 2011 à 16:47 par pijaku
Ce document intitulé « VBA - Dernière ligne non vide [Toutes versions] » issu de CommentCaMarche.net (CCM) (www.commentcamarche.net) est mis à disposition sous les termes de la licence Creative Commons. Vous pouvez copier, modifier des copies de cette page, dans les conditions fixées par la licence, tant que cette note apparaît clairement.




Sujet 32374 - Fonctions Excel Français - Anglais

[ Voir ce sujet en ligne ] - [ Catégorie: Bureautique - Microsoft Office - Excel ]

« PrécédentSuivant »
Sommaire
Pour les adeptes d'Excel en Anglais, voici la traduction des fonctions "principales" du Français à l'Anglais. Et réciproquement...

Français ====> Anglais 
ABS ====> ABS 
ACOS ====> ACOS 
ACOSH ====> ACOSH 
ADRESSE ====> ADDRESS 
ALEA ====> RAND 
AMORLIN ====> SLN 
ANNEE ====> YEAR 
ARGUMENT ====> ARGUMENT 
ARRONDI ====> ROUND 
ASIN ====> ASIN 
ASINH ====> ASINH 
ATAN ====> ATAN 
ATAN2 ====> ATAN2 
ATANH ====> ATANH 
AUJOURDHUI ====> TODAY 
BDECARTYPE ====> DSTDEV 
BDECARTYPEP ====> DSTDEVP 
BDMAX ====> DMAX 
BDMIN ====> DMIN 
BDMOYENNE ====> DAVERAGE 
BDNB ====> DCOUNT 
BDNBVAL ====> DCOUNTA 
BDPRODUIT ====> DPRODUCT 
BDSOMME ====> DSUM 
BDVAR ====> DVAR 
BDVARP ====> DVARP 
CAR ====> CHAR 
CELLULE ====> CELL 
CHERCHE ====> SEARCH 
CHOISIR ====> CHOOSE 
CNUM ====> VALUE 
CODE ====> CODE 
COLONNE ====> COLUMN 
COLONNES ====> COLUMNS 
COS ====> COS 
COSH ====> COSH 
CROISSANCE ====> GROWTH 
CTXT ====> FIXED 
DATE ====> DATE 
DATEVAL ====> DATEVALUE 
DB ====> DB 
DDB ====> DDB 
DECALER ====> OFFSET 
DEGRES ====> DEGREES 
DETERMAT ====> MDETERM 
DROITE ====> RIGHT 
DROITEREG ====> LINEST 
ECARTYPE ====> STDEV 
ECARTYPEP ====> STDEVP 
ENT ====> INT 
EPURAGE ====> CLEAN 
EQUIV ====> MATCH 
ESTERR ====> ISERR 
ESTERREUR ====> ISERROR 
ESTLOGIQUE ====> ISLOGICAL 
ESTNA ====> ISNA 
ESTNONTEXTE ====> ISNONTEXT 
ESTNUM ====> ISNUMBER 
ESTREF ====> ISREF 
ESTTEXTE ====> ISTEXT 
ESTVIDE ====> ISBLANK 
ET ====> AND 
EXACT ====> EXACT 
EXP ====> EXP 
FACT ====> FACT 
FONCTION.APPELANTE ====> CALL 
FRANC ====> DOLLAR 
GAUCHE ====> LEFT 
HEURE ====> HOUR 
INDEX ====> INDEX 
INDIRECT ====> INDIRECT 
INFO ====> INFO 
INTPER ====> IPMT 
INVERSEMAT ====> MINVERSE 
JOUR ====> DAY 
JOURS360 ====> DAYS360 
JOURSEM ====> WEEKDAY 
LIGNE ====> ROW 
LIGNES ====> ROWS 
LN ====> LN 
LOG ====> LOG 
LOG10 ====> LOG10 
LOGREG ====> LOGEST 
MAINTENANT ====> NOW 
MAJUSCULE ====> UPPER 
MAX ====> MAX 
MEDIANE ====> MEDIAN 
MIN ====> MIN 
MINUSCULE ====> LOWER 
MINUTE ====> MINUTE 
MOD ====> MOD 
MOIS ====> MONTH 
MOYENNE ====> AVERAGE 
N ====> N 
NB ====> COUNT 
NB.SI ====> COUNTIF 
NB.VIDE ====> COUNTBLANK 
NBCAR ====> LEN 
NBVAL ====> COUNTA 
NOMPROPRE ====> PROPER 
NON ====> NOT 
NPM ====> NPER 
OU ====> OR 
PI ====> PI 
PRINCPER ====> PPMT 
PRODUIT ====> PRODUCT 
PRODUITMAT ====> MMULT 
RACINE ====> SQRT 
RADIANS ====> RADIANS 
RANG ====> RANK 
RECHERCHE ====> LOOKUP 
RECHERCHEH ====> HLOOKUP 
RECHERCHEV ====> VLOOKUP 
REGISTRE.NUMERO ====> REGISTER.ID 
REMPLACER ====> REPLACE 
REPT ====> REPT 
SECONDE ====> SECOND 
SI ====> IF 
SIGNE ====> SIGN 
SIN ====> SIN 
SINH ====> SINH 
SOMME ====> SUM 
SOMME.SI ====> SUMIF 
SOMMEPROD ====> SUMPRODUCT 
SOUS.TOTAL ====> SUBTOTAL 
STXT ====> MID 
SUBSTITUE ====> SUBSTITUTE 
SUPPRESPACE ====> TRIM 
SYD ====> SYD 
T ====> T 
TAN ====> TAN 
TANH ====> TANH 
TAUX ====> RATE 
TEMPS ====> TIME 
TEMPSVAL ====> TIMEVALUE 
TENDANCE ====> TREND 
TEXTE ====> TEXT 
TRANSPOSE ====> TRANSPOSE 
TRI ====> IRR 
TRIM ====> MIRR 
TRONQUE ====> TRUNC 
TROUVE ====> FIND 
TYPE ====> TYPE 
TYPE.ERREUR ====> ERROR.TYPE 
VA ====> PV 
VAN ====> NPV 
VAR ====> VAR 
VAR.P ====> VARP 
VC ====> FV 
VDB ====> VDB 
VPM ====> PMT 
ZONES ====> AREAS 
Publié par pijaku - Dernière mise à jour le 4 août 2011 à 12:46 par n00r
Ce document intitulé « Fonctions Excel Français - Anglais » issu de CommentCaMarche.net (CCM) (www.commentcamarche.net) est mis à disposition sous les termes de la licence Creative Commons. Vous pouvez copier, modifier des copies de cette page, dans les conditions fixées par la licence, tant que cette note apparaît clairement.





© Tous droits réservés 2010 Jean-François Pillou