Résumé
Ce guide vous permet de comprendre les meilleures façons de dissocier et de fractionner les numéros et les descriptions de compte qui apparaissent dans la même colonne d’un fichier.
Résolution
Considérez l’extrait suivant d’un fichier du GL :
Les problèmes
- Ce fichier est groupé par compte : une seule ligne contient des informations sur le compte (lignes 7, 5695), suivies de toutes les transactions pour cette ligne (lignes 8 à 5691, 5696 à 6176) (contraire à l’exigence 1 relative à la ligne)
- Les informations du compte se trouvent dans la colonne A, mais contiennent à la fois le numéro de compte et la description du compte séparés par « - » (caractère espace plus - plus caractère espace) (lignes 7, 5695) (contraire à l’exigence 1 relative à la colonne)
- Il existe des lignes de total/sous-total inutiles (5692 à 5693, 6177 à 6178) et des lignes vides en dessous (contraire à l’exigence générale 2)
La solution (formatage nécessaire)
- Dissocier par compte (glisser les informations du compte en bas, vers chaque ligne de transaction)
- Fractionner en colonnes différentes le numéro de compte et la description du compte
- Exclure les lignes de total/sous-total/vides superflues et les lignes supplémentaires (lignes 1 à 4) au-dessus de la ligne d’en-tête (ligne 5)
Nous insérons deux colonnes, « Identifiant de compte » et « Description du compte », avant le début du fichier pour fractionner le numéro de compte et la description de compte et les faire glisser vers le bas :
Identifiant de compte : Cellule A7 et inférieure
=IFERROR(LEFT(C7,SEARCH(" - ",C7)-1),A6)
-
SEARCH(" - ",C7)
trouve la position dans la chaîne C7 où la première chaîne « - » apparaît. Nous y soustrayons 1 pour obtenir le nombre de caractères de l’identifiant de compte (5 caractères pour le compte 11110), - puis nous utilisons GAUCHE(C7,) pour obtenir le nombre de caractères le plus à gauche de cette chaîne de compte (donc les 5 premiers caractères de la cellule C7).
- Enfin, IFERROR(A,B) renvoie A si A n’est pas une erreur, B si A est une erreur.
- Nous voulons extraire le numéro et la description du compte uniquement à partir des lignes de la colonne C qui contiennent ces informations.
- Nous remarquons que ces cellules contenant le numéro de compte et la description du compte sont identifiées par la présence de « - » séparant le numéro de compte et la description du compte. SEARCH() renvoie une erreur (#VALUE!) si la chaîne n’est pas trouvée ; par conséquent, pour toutes les autres lignes, #VALUE! est renvoyé par SEARCH() (qui remonte jusqu’à la formule LEFT() dans laquelle il est imbriqué. Pour ces autres lignes, nous voulons simplement renvoyer le numéro de compte que nous avons extrait dans la ligne ci-dessus.
- Donc dans cet exemple, les éléments imbriqués LEFT() et SEARCH() dans la cellule A7 renvoient 1110, car la cellule C7 contient « - ».
- Mais dans la cellule A8,
=IFERROR(LEFT(C8,SEARCH(" - ",C8)-1),A7)
les éléments imbriqués LEFT() et SEARCH() renvoient #VALUE! car la cellule C8 (2019-04-01) ne contient pas « - ». - Cela est détectable par IFERROR(), qui, vu la valeur #VALUE!, passe à A7, qui est 1110 comme indiqué plus haut, et donc retourne également 1110. Tout se poursuit jusqu’à la ligne 5695, où le processus constate que la cellule C5695 contient « - » et extrait donc le compte 1-1112
Description du compte : Cellule B7 et inférieure
=IFERROR(MID(C7,SEARCH(" - ",C7)+3,LEN(C7)),B6)
Les formules de cette colonne suivent la même logique que celles de la colonne Identifiant de compte (colonne A), sauf qu’au lieu d’utiliser LEFT(), elles utilisent MID(), ce qui est utile pour extraire du texte de n’importe quel endroit, pas du début à la fin, ou pas jusqu’à la fin. La syntaxe est la suivante :
MID(text, start_num, num_chars)
où « text » représente la chaîne à rechercher (C7)
« start_num » est la position à laquelle commencer. Nous utilisons
SEARCH(" - ",C7)+3
car nous souhaitons commencer après le « - ».
Rappelez-vous ce qui précède, SEARCH(" - ",C7) donne la position où le « - » commence. Puisque « - » compte 3 caractères, nous en ajoutons 3 pour obtenir la position de début de la description du compte.
Enfin, le LEN(C7) donne la longueur de la chaîne dans la cellule C7, pour s’assurer que nous la prenons jusqu’à la fin.
Sous-totaux
Voici les formules pour les cellules G1 et H1 :
=SOUS-TOTAL(9,G5:G50000)
=SOUS-TOTAL(9,H5:H50000)
Nous utilisons 50000 car ce fichier particulier comporte moins de 50 000 lignes. Modifiez ce chiffre par un autre suffisamment grand pour correspondre au nombre total de lignes de votre fichier. Nous ajoutons ces formules afin de vérifier que le fichier s’équilibre lorsque nous exécutons l’étape finale de filtrage pour ne conserver que les lignes de transaction (suivant).
Filtrer pour conserver uniquement les lignes de transaction
Après avoir activé les filtres, vérifiez la colonne C (Date). Nous remarquons l’existence des dates 2020 et 2019, les autres étant les numéros de compte :
Copier et coller des valeurs dans un nouveau classeur
En notant que toutes les dates correspondent à des lignes de transaction, sélectionnez uniquement les dates :
Notez que les résultats de nos formules SOUS-TOTAL() dans les cellules G1 et H1 montrent que le total des transactions est équilibré (Hourra !)
Notre étape finale consiste à sélectionner la ligne d’en-tête et les lignes de transaction sélectionnées (c.-à-d., ligne 5 et suivantes dans l’affichage filtré - vous pouvez commencer à la cellule A5, appuyer sur Ctrl-Maj-Fin pour arriver à la fin du fichier et rectifier la position si nécessaire), puis copiez et collez des valeurs spéciales dans un nouveau classeur
Enfin, dans le nouveau classeur, assurez-vous de formater la colonne Date au format AAAA-MM-JJ (appuyez sur Ctrl-1 sur un ordinateur portable ou sur le bouton ⌘1 sur un Mac):
Nous disposons désormais d’un fichier correctement formaté, prêt à être importé dans MindBridge !
Dissocier dans Excel, fractionner dans MindBridge
Pendant la mise en correspondance des colonnes, MindBridge offre une fonction qui permet le fractionnement des colonnes. Par conséquent, si vous préférez utiliser une formule plus simple uniquement pour dissocier, sans fractionner en même temps, vous pouvez simplement ajouter une colonne Compte qui extraira la valeur de la colonne B si elle contient « - », sinon elle extraira la valeur trouvée ci-dessus :
=IF(ISERROR(SEARCH(" - ",B7)),A6,B7)
Suivez ensuite les étapes décrites ci-dessus pour filtrer, copier et coller dans un nouveau classeur.
Commencez à importer le fichier du GL formaté dans MindBridge, puis à l’étape 2 de la mise en correspondance des colonnes, cliquez sur les trois points à droite et sélectionnez Fractionner la colonne. Voir cet article pour plus d’informations et des instructions étape par étape pour fractionner les colonnes : Fractionnement des colonnes
Fractionnement de compte plus compliqué
Voir ici un exemple plus complexe de la façon de créer une formule pour fractionner un numéro de compte.
Y a-t-il autre chose qui vous vient à l’esprit ? Discutez avec nous ou soumettez une demande d’assistance supplémentaire.