6 bonnes raisons d’abandonner Recherchev, même si vous vous appelez Flash !

Flash, le paresseux de Zootopia


Bonjour à tous,
Pour faire suite à une discussion sur facebook avec Dominique et d'autres, voici 6 raisons pour lesquelles, il vaut mieux abandonner recherchev, au profit d'index/equiv.
Si vous ne connaissez pas l'utilisation d'index/equiv, vous pouvez lire ces articles ici, ici et .

Pour les inconditionnels de recherchev, nous sommes d'accord, vous économisez l'écriture de quelques caractères. Par exemple, ces deux formules sont équivalentes, la première vous fait économiser...ex...ac...t...e...m...ent 6 caractères 🙂

Si on transforme la plage en tableau (une bonne pratique), on arrive à des différences plus importantes, mais c'est simplement que la référence des plages est plus longue :

Voici donc 6 raisons pour lesquelles vous devriez abandonner Recherchev

Raison 1 à 3 : C'est dangereux
Ainsi, dans la zone de recherche, vous ne pourrez pas :
- ajouter des colonnes.
RechercheV ne fonctionnera plus, pire, il renverra un résultat pouvant induire en erreur.

- supprimer une colonne.
RechercheV ne fonctionnera plus. Dans cet exemple, j'avais remplacé la colonne de recherchev par la valeur 3.

- déplacer une colonne.
RechercheV ne fonctionnera plus.

Donc, comme le disait Dominique, si vous n'avez ne serait-ce qu'un seul recherchev, il devient dangereux - théoriquement - d'ajouter, de supprimer ou de déplacer une colonne dans votre fichier...

Raison 4 & 5 : C'est moins puissant
- avec recherchev, vous devez retourner des valeurs devant se trouver dans les colonnes de droite. Il est impossible de retourner des valeurs se trouvant à gauche.

- avec recherchev, vous ne pouvez pas retourner des valeurs se trouvant à l'intersection d'une ligne et d'une colonne. Ceci est tout à fait possible avec Index/Equiv :

Raison 6 : C'est moins lisible.
Si vous comparez ces deux formules, il est difficile de savoir ce que la recherchev retourne, c'est à dire, la valeur de la deuxième colonne.
=RECHERCHEV(G1;SitesWebs;2;0) - le 2 correspond à la deuxième colonne dans le tableau SitesWebs

Par contre, avec Index/Equiv on identifie clairement l'information : SitesWebs[Site web].
=INDEX(SitesWebs[Site web];EQUIV(G1;SitesWebs[No];0))

Voilà, j'espère que tout ceci vous aura convaincu. Si vous voulez lancer le débat, n'hésitez pas !

A bientôt.

Gaetan

PS : Ne manquez aucune nouvelle astuce sur Excel, abonnez-vous à notre newsletter gratuite !

Index + Equiv vs. RechercheV

Bonjour à tous,

Dans cette vidéo, nous allons voir comment utiliser une combinaison d'index et d'equiv à la place d'une fonction recherchev.
Vous pouvez télécharger le fichier ici.

Cette approche est maintenant relativement connue, mais si vous avez besoin de vous rafraichir les neurones, vous pouvez regarder ici et . Dans ce post, j'aimerais ajouter un point supplémentaire, notamment si vous utilisez des fichiers contenant beaucoup de données.

En effet, si vous avez à faire la recherche plusieurs fois sur la même colonne, afin d'optimiser les calculs, il peut être judicieux de créer une colonne reprenant la ligne de la valeur trouvée. Cette colonne utilise alors une formule EQUIV.

Ca donnerait donc ceci :

Et en vidéo avec quelques explications et astuces complémentaires :

En espérant que cette vidéo vous aura été très utile.

A bientôt.

Gaetan

PS : Ne manquez aucune nouvelle astuce sur Excel, abonnez-vous à notre newsletter gratuite !

Voter pour des nouvelles fonctionnalités d’excel (Anglais)

Bonjour à tous, et excellente nouvelle année !

Désolé pour ce long silence, j'ai eu à travailler sur pleins de projets, ainsi qu'une surprise pour cette année 2017...

Je viens de découvrir un lien assez intéressant sur le site de Microsoft :
https://excel.uservoice.com/forums/304921-excel-for-windows-desktop-application/filters/top

Sur ce lien, vous pouvez trouver une liste d'idées d'améliorations d'Excel. ces améliorations sont soumises à des votes de la part des utilisateurs.

Voici le top 3:
- Intégrer Python comme langage de programmation pour Excel (comme alternative à VBA)
- Permettre de choisir des configurations par défaut pour la création de tableaux croisés dynamiques (j'adore l'idée !) - Je vais surement en faire une capsule vidéo.
- Maintenir les 0 de tête lorsqu'on entre des valeurs. Qui n'a pas pesté lorsque le code postal 01500 se trouve transformé en 1500 ou quand un numéro de téléphone perd son zéo !!!

N'hésitez pas si vous avez des idées 🙂

A bientôt.

Gaëtan

PS : Ne manquez aucune nouvelle astuce sur Excel, abonnez-vous à notre newsletter gratuite !

VBA – Ajouter un outil de recherche d’erreur

Bonjour à tous,

Vous connaissez certainement la fonction de recherche (CTRL+F), qui permet notamment de naviguer dans l'ensemble d'un classeur.
recherche

Je vous propose ici de créer un formulaire reprenant le même principe, mais pouvant servir directement dans vos applications, ou pour des recherches plus particulières.

Voici une série de 3 vidéos qui expliquent comment ajouter très rapidement cet outil de recherche dans un fichier.
Cliquez ici pour le fichier.
erreurs

On va tout d'abord ajouter un formulaire :
userform

Puis dans un module, le code qui permet de lancer le formulaire :

Sub AfficherUF_Erreur()

 Dim wksFeuille As Worksheet
 Dim rgeCellule As Range

 For Each wksFeuille In ActiveWorkbook.Worksheets
     For Each rgeCellule In wksFeuille.UsedRange
         If rgeCellule.Value = "Erreur" Then
             UF_Erreurs.ListBoxErreurs.AddItem rgeCellule.Value
             UF_Erreurs.ListBoxErreurs.List(UF_Erreurs.ListBoxErreurs.ListCount - 1, 1) = _
                          wksFeuille.Name
             UF_Erreurs.ListBoxErreurs.List(UF_Erreurs.ListBoxErreurs.ListCount - 1, 2) = _
                          rgeCellule.Address
         End If
     Next
 Next

 UF_Erreurs.Show 0
End Sub

Et finalement, le code lié au double-clic sur le formulaire:

Private Sub ListBoxErreurs_DblClick(ByVal Cancel As MSForms.ReturnBoolean)
    Worksheets(Me.ListBoxErreurs.List(Me.ListBoxErreurs.ListIndex, 1)).Select
    Range(Me.ListBoxErreurs.List(Me.ListBoxErreurs.ListIndex, 2)).Select
End Sub

En vidéo, ca nous donne ceci :

Puis:

Note : Afin de pouvoir sélectionner les cellules posant problème, on va utiliser la propriété Modal en ajoutant un zéro : UF_Erreurs.Show 0
Et finalement :

Si vous voulez améliorer ce code en utilisant des variables tableaux (array) ou en jouant avec les propriétés des Listbox, n'hésitez pas à commander l'une de mes deux dernières formations :

PS : Ne manquez aucune nouvelle astuce sur Excel, abonnez-vous à notre newsletter gratuite !

Verrouiller une cellule après la saisie

Bonjour à tous,

Voici la question d'un lecteur :

"J'ai un tableau Excel protégé avec des cellules verrouillées et des cellules non verrouillées pour la saisie de plusieurs utilisateurs. Je voudrais que les cellules non verrouillées se verrouillent automatiquement après les saisies pour que les utilisateurs ne puissent plus les modifier, sauf moi."

Il existe probablement plusieurs solutions, mais en voici une possible en vidéo. Vous pouvez télécharger le fichier ici.

L'idée est de capturer l'événement Change de la feuille pour ensuite déprotéger la feuille, verrouiller la cellule, puis reprotéger la feuille.

Le code ajouté au clic droit sur la feuille est celui-ci :

Private Sub Worksheet_Change(ByVal Target As Range)
    If Not Intersect(Target, Range("MontantsASaisir")) Is Nothing Then
        Me.Unprotect
        Target.Locked = True
        Me.Protect
    End If
End Sub

Et en vidéo :

A bientôt.

Gaetan

PS : Ne manquez aucune nouvelle astuce sur Excel, abonnez-vous à notre newsletter gratuite !