macro qui permet de décroiser une partie de mon tableau excel

cleopatre

XLDnaute Nouveau
Bonjour,
Je suis désolé pour l'intitulé mais je ne pas trouvé une autre façon pour reformuler.
Alors je vous exlique mon problème:
dans le projet sur lequel je travaille, la présentation de ma base de donnée (forme, titre des colonnes ect...) est imposé pour des raisons spéciaux.
elle est présentée sous la forme suivante:
Colonne A: Noms des marchés ( je peux avoir 6 ou meme plus)
Colonne B: Noms d'ouvrages (je peux avoir 9 ou meme plus)
Colonne C: Types ( j'ai uniquement 3 types)
A partir de D1 et sur le reste de la ligne 1 (partie jaune dans l'exemple) : j'ai des dates
ça c'est mon point de départ, aprés je rentre dans le reste du tableau (partie bleue dans l'exemple) à partir de D2 des valeurs
Il ya une valeur unique par marché par ouvrage par type et par date.
(je vous ai mis un exemple ci joint pour illustrer):
Pour simplifier les calculs plus tard et les traçages de courbes, j'ai envie de créer une sorte de base de donnée intermédiare (onglet "BD inter" dans l'exemple) que je le présente d'une autre manière:
Colonne A: marché
colonne B: ouvrage
colonne C: type
colonne D; date
colonne E: valeur
j'ai pensé à l'aide de VBA, qu'à chaque fois je rentre une valeur dans la partie bleue de mon exemple, le programme recopie les données correspendantes à cette valeur (marché, ouvrage, type et date) de la façon désirée.
Mais je suis débutante dans le language VBA
Est-il possible de faire cette macro? Sinon avez vous autres idées
Merci d'avance
Cléo
 

Pièces jointes

  • exemple1.xls
    24 KB · Affichages: 170
  • exemple1.xls
    24 KB · Affichages: 199
  • exemple1.xls
    24 KB · Affichages: 197

cleopatre

XLDnaute Nouveau
Re : macro qui permet de décroiser une partie de mon tableau excel

Parfait!! moi j'ai voulu pas redemander pour ne pas trop demander donc j'ai essayé de supprimer le bouton au début en recopiant le code de programme au corps de la feuille BD INTER dans le Sub suivante:
Private Sub Worksheet_Activate()

End Sub

mais c'était pas top car j'été obligé d'activer à chaque fois la feuille "BD INTER" pour actualiser.

Ta deuxième solution me va trés bien et répond parfaitement à ma demande
merci
 

CocoVall

XLDnaute Nouveau
Re : macro qui permet de décroiser une partie de mon tableau excel

Bonjour,

Je ressors cette discussion qui, je crois, correspondrait à ce que je recherche. Mon problème est à peu près le même que Cléopatre, mon souci est que je ne peux pas visualiser le code fournit par néné06 ... Est-ce que cet XLDnaute est toujours dans les parages, ou est-ce que quelqu'un d'autre aurait une solution au problème posé par Cleopatre ?

Je vous remercie par avance !
 

Modeste

XLDnaute Barbatruc
Re : macro qui permet de décroiser une partie de mon tableau excel

Bonjour CocoVall et bienvenue!

néné06 est toujours vivant, je l'ai croisé sur le forum il y a peu de temps. Si ça peut te rassurer, je crois que personne ne peut accéder au code qu'il avait proposé à l'époque.

D'autre part, tu nous dis:
Mon problème est à peu près le même que Cléopatre
... Si quelqu'un s'aventurait à proposer une solution sur cette base, il est fort probable qu'elle conviendrait aussi à peu près à ton problème :p
Prends le temps de lire Lien supprimé et n'hésite pas à t'inspirer des bons conseils qui y figurent ... tu augmenteras tes chances d'obtenir une réponse qui "tienne la route"!

A bientôt,
 

CocoVall

XLDnaute Nouveau
Re : macro qui permet de décroiser une partie de mon tableau excel

Merci de ta réponse Modeste. Il est vrai que je n'ai pas été très explicite ...

Donc voici mon souci :
J'ai un tableau croisé (fait manuellement) concernant le nombre de rabattement en gare par arrêt : en ligne se trouvent le nom des arrêts et leur coordonnées géographiques, en colonne se trouve la/les gare(s) où se rabat (potentiellement) l'arrêt. Ce que je souhaiterai, c'est avoir un tableau décroisé (comme sur l'exemple Ex-Rabatt.xls avec la feuille nommée Decroise) où chaque arrêts est dupliqué (en ligne) autant de fois qu'il y a de gare potentielle + le nombre de rabattement pour cette gare. Je pense que vous comprendrez mieux avec le fichier attaché.

D'après ce que j'ai pu lire sur le net, la création d'une macro résoudrait mon problème (je pourrais décroiser le tableau à la main, mais j'ai 283 arrêts et 16 gares ...). Si l'un d'entre vous à le code miracle, je suis preneuse !

Je vous remercie par avance !

CocoVall
 

Pièces jointes

  • Ex_Rabattement.xls
    20.5 KB · Affichages: 105

Modeste

XLDnaute Barbatruc
Re : macro qui permet de décroiser une partie de mon tableau excel

Re-bonjour CocoVall,

Dans ton cas, il n'y a jamais de cellules vides dans les colonnes D et suivantes? Comme j'ignore complètement ce que peut être un "Rabattement" (mais ce n'est pas bien grave ;) je crée une ligne dans la seconde feuille, que la valeur soit à zéro, ou non.
J'ai travaillé avec des tableaux ce qui devrait permettre une exécution relativement rapide, avec un gros volume de données.

Dans la feuille "Rabattement", tu peux lancer la macro avec le racourci Ctrl+Shift+'F'. Exécute-la une première fois dans le fichier joint et regarde si les résultats sont conformes à tes aspirations ... et dis-nous ...
 

Pièces jointes

  • Ex_Rabattement (CocoVall).xls
    33 KB · Affichages: 167

CocoVall

XLDnaute Nouveau
Re : macro qui permet de décroiser une partie de mon tableau excel

Encore une fois, merci de ta réponse (rapide en plus ! :D)

A première vue, la macro que tu as crée me retourne ce que je souhaite. Effectivement, j'ai fait en sorte qu'il n'y ai pas de cellules vides dans la matrice, mais il y en avait à la base. Bref. Pourrais-tu s'il te plait m'expliquer comment tu as fait ?

(Je travaille dans les transports en communs, et le "rabattement" est un terme qui identifie des personnes qui prennent le bus pour se "rabattre" vers une gare pour ensuite prendre un transport ferré cette fois ci)


Merci Modeste !
 

Modeste

XLDnaute Barbatruc
Re : macro qui permet de décroiser une partie de mon tableau excel

Re²,

CocoVall à dit:
j'ai fait en sorte qu'il n'y ai pas de cellules vides dans la matrice, mais il y en avait à la base
Double question: "était-ce nécessaire?" et "comment as-tu fait, avec tes 283 arrêts et 16 gares?"

CocoVall à dit:
Pourrais-tu s'il te plait m'expliquer comment tu as fait ?
... Euh ... disons que si tu veux vraiment tout savoir, il va falloir remonter plus de cinquante ans en arrière :rolleyes:
Que veux-tu savoir précisément? Il s'agit d'une macro, comme tu l'as sûrement lu. Tu veux afficher le code? Que je commente certaines lignes ... toutes les lignes?
 

CocoVall

XLDnaute Nouveau
Re : macro qui permet de décroiser une partie de mon tableau excel

"était-ce nécessaire?"
> Oui, car je dois ensuite cartographier chacun des arrêts, et le 0 est nécessaire pour que le symbole soit représenté (il sera nul, mais là quand meme)

"comment as-tu fait, avec tes 283 arrêts et 16 gares?"
> Un simple "Atteindre cellule vide", le tout remplacé par 0

Que veux-tu savoir précisément?
> C'est une partie du code qui me pose "problème". Du moins, je n'arrive pas a réécrire correctement une partie du code pour le transposer à ma vraie table. Je te joins un .doc, dis moi si j'ai bien tout compris ...

Merci !
 

Pièces jointes

  • Tilililil.docx
    49.3 KB · Affichages: 109

Modeste

XLDnaute Barbatruc
Re : macro qui permet de décroiser une partie de mon tableau excel

Re³,

Réponse au message #13:
Tant mieux, tant mieux :D:D:D
... mais prend tout de même le temps de bien vérifier!

Réponse au message #12:
Je n'aurais pas trouvé mieux pour mettre des zéros dans les cellules vides!
"[A2].CurrentRegion" correspondrait à Atteindre (au départ de la cellule A2) > Zone en cours
"[A2].CurrentRegion.Rows.Count" permet de compter le nombre de lignes de la plage ainsi déterminée

"ReDim monTablo(nblig - 1, 4)" c'est à ce sujet que je parlais de l'utilisation de tableaux (en tant que variable, dans le code et non dans la feuille de calcul). Voici ce qu'on en dit dans l'aide:
Vous pouvez déclarer un tableau pour traiter un ensemble de valeurs du même type de données. Un tableau est une variable simple comportant de nombreux compartiments permettant de stocker autant de valeurs, par opposition à une variable classique dotée d'un compartiment destiné à une seule valeur. Vous pouvez faire référence au tableau globalement lorsque vous souhaitez faire référence à toutes les valeurs qu'il contient, ou faire référence à ses éléments individuels.
Ici, le tableau a 2 dimensions (schématiquement: nombre de lignes et nombre de colonnes) ... Bon, je sais ce sont les quelques lignes qui te font "sécher", mais je peux difficilement t'expliquer les tableaux (ce sont des chapitres entiers dans les bouquins) :eek:

"Range("A2:E" & Rows.Count).ClearContents" efface le contenu de la plage de A2 à E x ... x étant ici la dernière ligne de la feuille (équivaut à l'utilisation de la touche Delete du clavier)
"Sheets("Decroise").Range("A2:E" & nblig + 1) = monTablo": On "colle" dans la plage de cellules, le contenu de la variable tableau

Pas le temps de détailler plus pour le moment, mais reviens nous dire s'il te reste des questions après avoir "fouillé" un peu (... beaucoup, passionnément, à la folie, ...)
 

Discussions similaires

Réponses
0
Affichages
194

Statistiques des forums

Discussions
311 725
Messages
2 081 940
Membres
101 845
dernier inscrit
annesof