report nom colonne sous conditions

Gepe

XLDnaute Nouveau
Bonjour à tous,

Je suis un nouveau venu sur ce forum dont je n’ai lu que du bien. Je tiens la comptabilité (sous forme de budget) d’une « petite » ASBL d’un club sportif. Pour cela, j’utilise un classeur Excel 2003 avec 30 feuilles environ (sous Windows XP édition familiale). Une de ces feuilles sert à enregistrer les opérations de notre compte bancaire (environ 700 écritures par an).

J’utilise 35 lignes consécutives pour inscrire les opérations (lignes 5 à 39, 42 à 76, etc. jusque 486 à 520), les lignes 1 à 4 contenant des titres et les autres des reports.

J’inscris manuellement dans la colonne D le montant de l’opération (positif ou négatif selon que recette ou dépense) et j’affecte ce montant manuellement dans une des colonnes E à AC selon sa nature comptable (E = Affiches, F = Cotisations, G = Entrées … Z = Voitures). Le nom de ces colonnes figure dans les cellules E3 à AC3.

Comment pourrais-je obtenir dans chaque cellule de la colonne AD (AD5 à AD39, AD42 à AD76, etc. jusque AD 486 à AD520) le report automatique du nom de celle des colonnes dans laquelle j’ai affecté le montant ? Donc, le nom contenu dans une des cellules E3 à AC3.

Je confesse que je maîtrise moyennement les formules Excel et que je ne connais absolument pas les macros. La fonction SI ne convient pas car elle ne peut être répétée que 7 fois dans une cellule et j’ai 25 possibilités selon la colonne dans laquelle j’ai imputé le montant reçu ou payé ! Y a t’il une autre formule qui conviendrait ?

Faudrait-il utiliser VBA ? Que je ne connais pas ! Je sais juste faire ALT+F11 pour y accéder, Ctrl+R pour afficher la fenêtre Projet, et ouvrir une feuille de code. Et puis c’est tout !
Si quelqu’un pouvait me donner le texte de la fonction à écrire et la manière de la rendre active en VBA tout comme dans mon fichier Excel (eh oui, je l’avais dit, je n’y connais rien en VBA) je lui en serais particulièrement reconnaissant.

Merci d’avance à tous ceux qui voudront bien se pencher sur mon « cas ».

Georges
 

Gepe

XLDnaute Nouveau
Re-bonjour,
En fouillant sur le site, j'ai trouvé le conseil de Monique, je crois, qui préconisait d'enchainer les SI avec les &SI, ce qui permet d'utiliser un nombre de SI bien supérieur à 7. Et eneffet, celà marche. Je suis donc en mesure de poursuivre mon boulot comptable dans notre ASBL avec plus d'automatisme qu'auparavant.
Néanmoins, si un membre avait la bonté et la patience de m'expliquer comment j'aurais pu résoudre mon pb avec VBA, ce serait chouette. Je voudrais comprendre commment fonctionne VBA. Quand on me l'aura expliqué avec mon exemple bien concret, il ne me restera qu'à apprendre à écrire les fonctions. Mais pour moi, le premier pas me paraît le plus difficile à comprendre.
Merci et à bientôt.
Georges
 

Gepe

XLDnaute Nouveau
Sorry, c'est Claude qui a fait référence à Monique, mais c'est le fichier de Claude que j'ai téléchargé pour pouvoir recopier sa formule de concaténation des 'SI'. En l'adaptant à ma situation, çà marche.
Merci à Claude (rendons à César...) et aux autres. Mais encore une fois, si quelqu'un pouvait expliquer VBA (voir message précédent ...).
Bonne nuit.
Georges
 

_Thierry

XLDnaute Barbatruc
Repose en paix
Bonsoir Gépé, le Forum de nuit

En fait je suis assez fatigué pour t'expliquer tout VBA ce soir... ;)

Pour ce qui est de problème concret sans fichier joint représentatif, je ne peux vraiment me mettre dans le contexte.

Pour une première leçon de base VBA regarde et essaie ceci tout simplement :

Sub PetiteBoucleSurRange()
Dim MaPlage As Range, Cell As Range

Set MaPlage = Range('E5:AC520')

For Each Cell In MaPlage
   
If Cell <> '' Then
&nbsp; &nbsp; &nbsp; &nbsp; Range('AD' & Cell.Row) = Cells(3, Cell.Column)
&nbsp; &nbsp;
End If
Next

End Sub


Bonne Nuit

@+Thierry
 

Gepe

XLDnaute Nouveau
Merci Thierry d'avoir déjà répondu à une heure aussi avancée. J'ai recopié la formule telle quelle dans une feuille de code VBA.
Comme je ne sais pas comment rendre cette formule opérationnelle en Excel, j'ai tout simplement marqué à tout hasard dans la cellule AD5 '= PetiteBouclesurRange' mais celà donne #NOM?
Donc, si ce n'est pas abuser, peux-tu juste me dire ce que je dois faire après avoir recopié la fonction VBA dans la feuille de code pour qu'elle agisse dans mon fichier Excel.
Grand merci d'avance.
Georges
 

Gepe

XLDnaute Nouveau
Thierry,
OK OK j'ai découvert comment exécuter une macro !!! Grand merci çà marche parfaitement.
J'ai encore une petite particularité dans cette feuille Excel qui représente en fait un livre de recettes et dépenses (qui doit donc répondre à certaines obligations légales quant à sa forme). Quand je l'imprime, la dernière ligne de ma page doit spécifier les totaux et la première ligne de la page suivante doit servir au report de ces totaux. Jusque là pas de problème, j'ai utilisé les formules nécessaires. Maintenant, ce qui serait bien, serait de pouvoir appliquer l'action de la macro que tu m'as communiquée aux seules lignes qui sont utilisées pour recevoir les recettes et dépenses. Il s'agit chaque fois d'un bloc de 35 lignes consécutives suivi de 2 lignes pour les totaux et le report comme dit ci-avant.
En pratique, pourrais-je modifier la fonction de telle sorte qu'elle sorte ses effets aux lignes 5 à 39, 42 à 76, 79 à 113, 116 à 150, 153 à 187, etc.
J'ai essayé de modifier le 'range' en indiquant 'E5:AC39;E42:AC76' etc ... mais çà ne va pas. Y a t'il une solution ?
Encore un tout grand merci d'avance.
Georges
 

Gepe

XLDnaute Nouveau
Bonjour à tous,
En relisant mon message précédent je me rends compte que je me suis adressé à Thierry exclusivement (que je remercie encore). Je ne voudrais pas que les autres membres pensent que j'ai voulu les 'snober'.
Mille excuses à chacun d'entre vous pour cette petite omission.
Georges
 

Statistiques des forums

Discussions
312 109
Messages
2 085 381
Membres
102 876
dernier inscrit
BouteilleMan