|
Publicité ' | |||||||||||||||||||||||
|
|
#1 |
|
Membre régulier
![]() Vincent VincentInscription : octobre 2010 Messages : 242 ![]() |
Bonjour à tous,
J'ai un fichier excel qui contient une foultitude de données dans une première feuille. J'ai besoin dans une seconde feuille de : -recopier la première colonne (la A) telle quelle -soustraire la colonne B à toutes les autres colonnes (ainsi dans la deuxième feuille je veux avoir colonne B=colonne C première feuille - colonne B première feuille ; colonne C=colonne D première feuille - colonne B première feuille; et ainsi de suite jusqu'à la première colonne vide de la première feuille) Enfin dans une troisième feuille je souhaiterais que : -recopier la première colonne (la A) telle quelle -soustraire la valeur de la colonne B ligne x de la deuxième feuille à toutes les lignes de la colonne B et renvoyer la valeur dans la feuille 3 colonne B -soustraire la valeur de la colonne C ligne x de la deuxième feuille à toutes les lignes de la colonne C et renvoyer la valeur dans la feuille 3 colonne C et ainsi de suite pour toutes les colonnes non vide Je vous remercie de votre aide par avance Cordialement Vincent PS je n'ai pas la moindre idée de la manière de m'y prendre pour réaliser une telle macro |
|
|
00
|
|
|
#2 |
|
Membre actif
![]() Inscription : novembre 2008 Messages : 188 ![]() |
A mon avis, pas besoin de VBA pour faire tout cela. Les formules Excel sont largement suffisantes.
|
|
|
00
|
|
|
#3 |
|
Membre régulier
![]() Vincent VincentInscription : octobre 2010 Messages : 242 ![]() |
effectivement celà peut être fait manuellement cependant traiter des dizaines (pour ne pas dire des centaines) de fichier contenant chacun plus de 1700 lignes et 30 colonnes est assez redondant pour nécessiter une macro
C'est pourquoi je sollicite votre aide Cordialement Vincent |
|
|
00
|
|
|
#4 | |||
|
Membre Expert
![]() Retraité Inscription : avril 2011 Messages : 692 ![]() |
Bonjour,
Voici un bout de code pour te permettre de commencer Code :
Citation:
|
|||
|
|
00
|
|
|
#5 |
|
Membre régulier
![]() Vincent VincentInscription : octobre 2010 Messages : 242 ![]() |
Tout d'abord merci beaucoup pour la première partie de ma question, la solution proposée fonctionne correctement.
Concernant la deuxième partie : Soit une ligne x (par exemple la ligne 345) je souhaite réaliser la soustraction suivante pour toutes les colonnes SAUF la A : =ligne 1 - ligne 345 =ligne 2- ligne 345 ... =ligne (vide-1) -ligne 345 =ligne vide ===> END Les valeurs obtenues seront renvoyées dans une troisième feuille (par exemple [feuille 3 colonne B ligne 4] = [feuille 2 colonne B ligne 4] - [feuille 2 colonne B ligne 345] Est ce plus clair ? |
|
|
00
|
|
|
#6 |
|
Membre Expert
![]() Retraité Inscription : avril 2011 Messages : 692 ![]() |
Mouais ! c’est limpide … ou pas !
Si j’ai bien suivi ton raisonnement, tu vas balayer toutes les lignes(x) de la colonne B et effectuer le calcul : B(x)(feuil3) = B(x)(feuil2) - B345(feuil2) ( idem pour les autres colonnes). Exemple : quand tu vas atteindre la cellule B345, tu vas effectuer le calcul suivant : B345(feuil3) = B345(feuil2) - B345(feuil2) = 0. C’est bien ça ? Comment déclares-tu le numéro de ligne correspondant à la valeur à soustraire ? Est-ce une constante déclarée « en dur » dans la procédure ou une variable ? Dernier point (primordial) : n’as-tu pas assez d’éléments avec le code mis à ta disposition pour te dépatouiller ? Le forum a pour vocation d’aider les participants à rédiger leurs procédures. Tu ne dois pas demander que le travail soit fait à ta place. Cordialement. |
|
|
00
|
|
|
#7 | ||
|
Membre régulier
![]() Vincent VincentInscription : octobre 2010 Messages : 242 ![]() |
Merci gFZT82,
Grâce à ton code j'ai un peu bricolé et ça fonctionne. J'ai rajouté les lignes suivantes juste avant le "'libère les ressources" : (j'ai défini que la valeur à retrancher était situé sur la ligne 882) Code :
En tout cas encore merci pour ton aide Bonne soirée Vincent |
||
|
|
00
|
|
|
#8 | |
|
Membre actif
![]() Inscription : novembre 2008 Messages : 188 ![]() |
Citation:
ou par Rajouter .Offset(i,j) permet de décaler de i lignes et j colonnes la cellule désignée initialement. Par exemple: |
|
|
|
00
|
|
|
#9 |
|
Membre Expert
![]() Retraité Inscription : avril 2011 Messages : 692 ![]() |
Bravo à toi !
![]() Le offset (blablabla) permet de se référencer à une plage au moyen d’un décalage. Range("C1") est équivalent à Range("B1").offset(0,1) … décalage de 0 ligne et 1 colonne. Range("C2") est équivalent à Range("C1").offset(1,0) … décalage de 1 ligne et 0 colonne. Cordialement. |
|
|
00
|
|
|
#10 |
|
Membre régulier
![]() Vincent VincentInscription : octobre 2010 Messages : 242 ![]() |
Encore merci pour le code ainsi que les explications très claires
Bonne soirée à vous Vincent |
|
|
00
|
Copyright © 2000-2012 - www.developpez.com