Chercher une référence circulaire

Bon­jour à tous,

Voici com­ment tra­quer une référence circulaire ?

Une référence cir­cu­laire, c’est lorsque vous faites référence à la même cel­lule (directe­ment ou indi­recte­ment), et de fait le cal­cul devient cir­cu­laire, donc insol­u­ble d’une cer­taine manière.
Par exem­ple ici :

Tout d’abord, et c’est con­tre-intu­itif, l’er­reur ne se trou­ve pas for­cé­ment ici :

Mais vous aurez plus de chance de la trou­ver là :

Vous pou­vez ensuite analyser les cel­lules trou­vées pour com­pren­dre le problème.

Par­fois, si la sit­u­a­tion est assez com­plexe, SUR UNE COPIE DE SAUVEGARDE, sup­primer les for­mules des références cir­cu­laires jusqu’à ce que celle-ci devi­enne grisé. Ca vous per­met de remon­ter à la source.

Espérant que cela vous aide !

A bien­tôt.

Gae­tan

[2016 et +] Lister les lignes des cellules vides dans une seule cellule

Téléchargez le fichi­er ici
Une réponse pos­si­ble pour 2016+, à valid­er avec CTRL+MAJ+Entrée :
=CONCAT(SI(Tableau1[Plage à tester]=””;LIGNE(Tableau1[Plage à tester])&” “;“”))
ou encore :
=JOINDRE.TEXTE(“-”;VRAI;SI(Tableau1[Plage à tester]=””;LIGNE(Tableau1[Plage à tester]);“”))


En cher­chant un moyen de ren­voy­er toutes les cel­lules vides d’une plage, je suis tombé sur cette for­mule qui per­met de ren­voy­er la pre­mière ligne : 

A valid­er par CTRL+MAJ+Entrée
=MIN(SI(Tableau1[Plage à tester]=””;LIGNE(Tableau1[Plage à tester]);“”))
Et si on décompose :
=MIN(SI({VRAI;FAUX;VRAI;FAUX;VRAI;FAUX};{2;3;4;5;6;7});“”))
D’où :
=MIN({2;””;4;””;6;“”})
et donc :
2

De là, me dis-je, on devrait pou­voir arriv­er à con­catén­er l’ensem­ble de :
SI(Tableau1[Plage à tester]=””;LIGNE(Tableau1[Plage à tester]))
Ce qui nous don­nerait la solution.

Mal­heureuse­ment, CONCATENER ne sem­ble pas fonc­tion­ner comme for­mule matricielle, MAIS, la nou­velle fonc­tion CONCAT ou JOINDRE.TEXT peut le faire 🙂

D’où
A valid­er avec CTRL+MAJ+Entrée
=CONCAT(SI(Tableau1[Plage à tester]=””;LIGNE(Tableau1[Plage à tester])))
qui ren­voit donc :
246

Et si on veut sépar­er les lignes avec un espace (CTRL+MAJ+Entrée) :
=CONCAT(SI(Tableau1[Plage à tester]=””;LIGNE(Tableau1[Plage à tester])&” “;“”))

Ou encore avec JOINDRE.TEXTE
=JOINDRE.TEXTE(“-”;VRAI;SI(Tableau1[Plage à tester]=””;LIGNE(Tableau1[Plage à tester]);“”))

Et si on veut récupér­er l’adresse exacte (CTRL+MAJ+Entrée)
=CONCAT(SI(Tableau1[Plage à tester]=””;ADRESSE(LIGNE(Tableau1[Plage à tester]);COLONNE(Tableau1[Plage à tester]))&” “;“”))
qui renvoit :
$A$2 $A$4 $A$6

En espérant que cela vous ouvre pleins d’horizons !

Je n’ai pas trop cher­ché, mais si vous con­nais­sez la solu­tion pour les ver­sions antérieures à 2016, n’hésitez-pas.

A bien­tôt

Gae­tan

Gérer un mini-mini budget dans une cellule

Bon­jour à tous,

Entre l’en­reg­istrement de deux vidéos sur les tableaux croisés dynamiques, j’avais besoin de faire tra­vailler un peu les neu­rones du VBA 🙂

Donc, suite à une dis­cus­sion avec Dominique qui me rap­pelait l’u­til­i­sa­tion de la for­mule N() pour laiss­er un com­men­taire dans une for­mule, m’est venu l’idée de gér­er tout cela via un formulaire.
Par exem­ple, vous pou­vez entr­er une for­mule comme ceci : 

=N(“Solde Départ”)+1000+N(“Train”)-90+N(“Nouveau”)-98

qui va ren­voy­er 812 (=1000–90-98).

Cette for­mule per­met donc de con­serv­er la sig­ni­fi­ca­tion des valeurs entrées.

En VBA, ca nous donne donc ce formulaire :

Par exem­ple, cela vous per­met de gér­er un mini-bud­get dans une cel­lule pour savoir où vous en êtes d’un prévisionnel. 

Vous pou­vez télécharg­er le fichi­er ici et faire un dou­ble-clic sur n’im­porte quelle cellule. 

Pour l’in­sér­er dans vos pro­pres fichiers. Voici la procé­dure en vidéo :

Je vais cer­taine­ment en faire une cap­sule vidéo VBA si l’ex­pli­ca­tion détail­lée du code vous intéresse.

Si vous voyez d’autres util­i­sa­tions pos­si­bles de ce type de formules/formulaires, n’hésitez-pas à commenter.

A bien­tôt.

Gae­tan