Choisir une feuille de comparaison en changeant le contenu d’une cellule – fonction INDIRECT

Bonjour à tous,

En réalisant une petite application de retraitement de données, j'ai été amené à ajouter le résultat du traitement dans une nouvelle feuille.
Jusque là, pas de problèmes.

Ensuite, je veux comparer le résultat de ce traitement (en E2) avec une la feuille intiale.
Pour les XLérateurs, voici la formule finale 🙂
=SI(A2=INDIRECT($E$2&"!A"&LIGNE());"Match parfait";"Erreur")

Ci-dessous, le détail de la formule.

En Feuille Initiale, on a ceci :
excel-indirect-ligne-initial

Et on veut comparer cette feuille initiale avec le traitement1 et le traitement2 (ajout de fautes d'orthographes !)
excel-indirect-ligne-traitement1
excel-indirect-ligne-traitement2

D'où la formule suivante :
=SI(A2=INDIRECT($E$2&"!A"&LIGNE());"Match parfait";"Erreur")
qui permet de reprendre l'adresse de la cellule à comparer :
$E$2&"!A"&LIGNE()
soit
"Traitement1!A2"
et ensuite avec INDIRECT de renvoyer la valeur de la cellule.
On se trouve donc avec une formule comme ceci :
=SI(A2=INDIRECT("Traitement1!A2");"Match parfait";"Erreur"), et le INDIRECT renvoit donc :
=SI(A2="Ceci est le premier résultat";"Match parfait";"Erreur")

Evidemment, deux avantages :
- on peut recopier la formule vers le bas, grâce à LIGNE.
- en changeant la valeur en E2, par exemple, en utilisant Traitement2, toutes les formules se mettent automatiquement à jour !

Voilà, j'espère que vous allez aimer cette approche et qu'elle vous sera très utile.
excel-indirect-ligne

A bientôt.

Gaëtan

A savoir : coller des données texte AVEC ou SANS la conversion des virgules ou des guillemets

Bonjour à tous,

Il s'agit d'une astuce très simple, mais qu'il faut absolument connaître si vous travaillez avec des fichiers texte.

1/ Lorsque vous collez du texte, par exemple :

Année, entreprise, produit
2006, xlerateur, excel

Excel va décider "à votre place" comment le texte va être formaté.
Par exemple, il pourrait retourner ceci :
excel-vba-coller-csv
ou celà :
excel-vba-coller-csv-avec-virgule 1

Evidemment, la question est : comment sélectionne-t-on le bon format (séparateur de virgule ou pas) ?

La solution est toute bête, il suffit de faire une conversion de test en spécifiant ou non le séparateur :
- mettre du texte dans une cellule
- cliquez sur données - Convertir
excel-vba-coller-csv-avec-virgule-convertir 1
- choisir vos paramètres
ici, on commence avec délimité
excel-vba-coller-csv-convertir-etape1
Puis, on va cocher ou décocher le ou les délimiteurs pour pouvoir coller le texte avec ou sans transformation.
excel-vba-coller-csv-convertir-etape2

Très important : cela fonctionne AUSSI pour les guillemets, ce qui est très pratique si vous voulez garder vos guillemets lors du collage de texte.
excel-vba-coller-csv-convertir-etape2-guillemets

Amusez-vous bien !

A bientôt.

Gaëtan

Combiner date et heure

Bonjour à tous,

Voici une question assez simple, mais dont la réponse peut paraître contre-intuitive.

Mettons que l'on ait une date et une heure et que l'on veuille combiner les deux :

Super-astuces : CTRL+: pour l'heure courante et CTRL+; pour la date d'aujourd'hui.
La réponse pour les plus pressés : faire simplement = A1 + B1.
Lisez la suite pour plus d'informations 🙂

excel-date-heure 1

Intuitivement, on pourrait penser qu'une concaténation en utilisant le & serait suffisante.

Malheureusement, la formule =A1&B1 ne donne pas le résultat escompté :

excel-date-heure-concatenation 1

Il faut se souvenir qu'excel conserve les dates comme le nombre de jours depuis le 1/1/1900. Ainsi, si on enlève le formatage en date, on a ceci :

excel-date-heure-concatenation-format 1

Ce qui explique pourquoi la concaténation transforme les deux nombres en texte.

La solution consiste donc à simplement faire une addition ! Hé oui, c'est aussi "simple" 🙂

D'où :
excel-date-heure-addition 1

Puis on met à jour le format de la date,
excel-date-heure-addition-formatage-heure 1

Note : on aurait aussi pu utiliser cette astuce de sioux, mais ca n'est pas vraiment recommandé, car on perd de l'information et il sera difficile de réutiliser la date et l'heure.
=TEXTE(A1;"jj/mm/aaaa")&" "&TEXTE(B1;"hh:mm")

Amusez-vous bien !

Gaetan