Précédent   Forum des professionnels en informatique > Logiciels > Microsoft Office > Excel
Excel Forum d'entraide sur Excel. Vos questions sur les fonctions, formules, manipulations, et tout sujet qui ne trouve pas sa place dans un sous-forum.
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 26/02/2011, 01h33   #1
Invité régulier
 
Inscription : mars 2009
Messages : 21
Détails du profil
Informations personnelles :
Localisation : France, Gironde (Aquitaine)

Informations forums :
Inscription : mars 2009
Messages : 21
Points : 6
Points : 6
Par défaut Ondelette de Haar sur Excel

Bonjour,

Pour des raisons pédagogiques, je voudrais tester la compression par ondelettes de Haar sur Excel. Je m'explique : en fait, je dispose d'un tableau de 128x128 nombres, et je veux créer un autre tableau de même taille de la manière suivante. Sur la première ligne du tableau de départ, je groupe les nombres par paire, je calcule leur somme et leur différence, et sur la première ligne du tableau d'arrivée, je veux d'abord toutes les sommes puis toutes les différences. Et ensuite, je fais la même chose sur toutes les autres lignes.

Ainsi, en mettant le tableau de départ en feuille 1 et le tableau d'arrivée en feuille 2, dans la cellule A1 de la feuille 2, je veux =Feuil1!A1+Feuil1!B1, dans la cellule B1 de la feuille 2, je veux =Feuil1!C1+Feuil1!D1... etc... je veux toutes les sommes de termes deux à deux dans les 64 premières cellules de la première ligne, et ensuite les différences, donc dans la cellule BM1 de la feuille 2, je veux =Feuil1!A1-Feuil1!B1, dans la cellule BN1 =Feuil1!C1-Feuil1!D1... ainsi de suite.

C'est tout bête Sauf que je ne voudrais pas avoir à taper toutes ses formules une par une !!! Alors j'ai l'habitude du copier/coller... mais ici, un copier/coller classique ne marchera pas... en B1, il va me mettre =Feuil1!B1+Feuil1!C1 au lieu de Feuil1!C1+Feuil1!D1.

Y a-t-il une astuce que je ne connais pas ?

Je préférerai éviter les macros (mais s'il n'y a vraiment pas d'autre solution, je suis preneur).

Merci d'avance.

Greg
galigori est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 26/02/2011, 07h28   #2
Membre Expert
 
Inscription : novembre 2006
Messages : 1 464
Détails du profil
Informations personnelles :
Âge : 49

Informations forums :
Inscription : novembre 2006
Messages : 1 464
Points : 1 410
Points : 1 410
La première astuce qui me vient a l'esprit
pour ce qui concerne l'ensemmble du tableau, pas de probleme, il te suffira d'incrémenter la première ligne. la difficulté est de créer lcette première ligne, je te propose de commencer un tableau 2, non de 128 colonne, mais de 256 colonnes. tu pose en A1
puis tu incrémente sur les 128 premieres colonnes, ensuite tu pose sur les suivantes
puis tu selectionne et tu effaces une colonne sur deux, ce qui ce fait en un seul Ctrl clik
et ensuite seulement tu incrémentes le reste du tableau
alsimbad est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 26/02/2011, 10h08   #3
Invité régulier
 
Inscription : mars 2009
Messages : 21
Détails du profil
Informations personnelles :
Localisation : France, Gironde (Aquitaine)

Informations forums :
Inscription : mars 2009
Messages : 21
Points : 6
Points : 6
Aaah ! L'astuce est donc d'effacer une colonne sur deux ! Merci.

Humm... et je dois sélectionner les 64 colonnes une par une avec ctrl avant d'effacer (ce qui sera long si je retente avec une image de 1024x1024, avec 512 colonnes à sélectionner) ou il y a une technique pour sélectionner d'un coup une colonne sur deux ?
galigori est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 26/02/2011, 10h12   #4
Membre habitué
 
Inscription : janvier 2011
Messages : 106
Détails du profil
Informations personnelles :
Âge : 51

Informations forums :
Inscription : janvier 2011
Messages : 106
Points : 137
Points : 137
Bonjour,

Si j'ai bien compris, tester en A1 de feuill2:
Code :
=SOMME(DECALER(Feuil1!$A$1:$B$1;;COLONNE()*2-2))
__________________
.
U. Milité
U. Milité est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 26/02/2011, 11h04   #5
Invité régulier
 
Inscription : mars 2009
Messages : 21
Détails du profil
Informations personnelles :
Localisation : France, Gironde (Aquitaine)

Informations forums :
Inscription : mars 2009
Messages : 21
Points : 6
Points : 6
Parfait !!!

Je ne connaissais pas cette fonction DECALER et c'est exactement ce dont j'avais besoin.

Merci beaucoup !
galigori est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 26/02/2011, 11h32   #6
Membre expérimenté
 
Homme
Enseignant
Inscription : novembre 2009
Messages : 350
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : Algérie

Informations professionnelles :
Activité : Enseignant

Informations forums :
Inscription : novembre 2009
Messages : 350
Points : 500
Points : 500
Bonjour à tous,

Essayes avec la formule (un peu longue) suivante (en Feuil2!A1) puis copiée le long du tableau...
Code :
=SI(COLONNE()<=64;INDIRECT("Feuil1!"&ADRESSE(LIGNE();2*(COLONNE()-1)+1))+INDIRECT("Feuil1!"&ADRESSE(LIGNE();2*(COLONNE()-1)+2));INDIRECT("Feuil1!"&ADRESSE(LIGNE();2*(COLONNE()-1)-127))-INDIRECT("Feuil1!"&ADRESSE(LIGNE();2*(COLONNE()-1)-126)))
Cordialement
hben1961 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 26/02/2011, 11h55   #7
Membre expérimenté
 
Homme
Enseignant
Inscription : novembre 2009
Messages : 350
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : Algérie

Informations professionnelles :
Activité : Enseignant

Informations forums :
Inscription : novembre 2009
Messages : 350
Points : 500
Points : 500
Bonjour à tous,

Tu pourras aussi utiliser la formule suivante (mois longue que la précédente, avec en partie la formule donnée par U. Milité):
Code :
=SI(COLONNE()<=64;SOMME(DECALER(Feuil1!$A$1:$B$1;;2*COLONNE()-2));SOMME(DECALER(Feuil1!$A$1;;2*COLONNE()-130);-DECALER(Feuil1!$B$1;;2*COLONNE()-130)))
Cordialement
hben1961 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 27/02/2011, 14h13   #8
Invité régulier
 
Inscription : mars 2009
Messages : 21
Détails du profil
Informations personnelles :
Localisation : France, Gironde (Aquitaine)

Informations forums :
Inscription : mars 2009
Messages : 21
Points : 6
Points : 6
Je ne connaissais pas INDIRECT non plus Très utile, merci à tous les 3 !
galigori est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 27/02/2011, 16h34   #9
Invité régulier
 
Inscription : mars 2009
Messages : 21
Détails du profil
Informations personnelles :
Localisation : France, Gironde (Aquitaine)

Informations forums :
Inscription : mars 2009
Messages : 21
Points : 6
Points : 6
Ca marche impec. Sur les 64 premières colonnes, j'utilise la formule :

Code :
=SOMME(DECALER(Feuil1!$A1:$B1;;COLONNE()*2-2))
et sur les 64 suivantes :

Code :
=DECALER(Feuil1!$A1;;2*COLONNE()-130)-DECALER(Feuil1!$B1;;2*COLONNE()-130)
Ce sont vos formules en sortant le $ devant les numéros de ligne pour que les copies fonctionnent dans les lignes suivantes.

Prochaine étape : la version macro !
galigori est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 17h09.


 
 
 
 
Partenaires

Hébergement Web