Besoin d'aide pour un projet Excel

edouardgg

XLDnaute Nouveau
Bonjour à tous,

Je suis étudiant et je dois réaliser un projet excel dans le cadre des cours d'informatique.
Je maîtrise à peu près bien les formules Excel, mais par contre j'ai de grosses lacunes sur Visual Basic.
J'ai quasiment fini mon projet, mais j'aimerais créer un "historique". Pour cela, je pensais créer une macro. L'idée c'est que la macro doit venir récupérer des informations dans différentes feuilles, pour les coller côte à côte sur une nouvelle feuille. Avec l'enregistreur de macro, j'ai réussi à faire cela. Mon souci, c'est que je veux pouvoir faire plusieurs lignes sur cette feuille, je ne sais pas si vous voyez..., parce que lorsque je relance la macro, cela écrase la ligne.

En d'autres termes, les données sont collées en: A1, B1, C1, D1,....
Si je relance la macro, cela recollera les données sur les memes cellules, alors que j'aimerais les coller en A2, B2, C2....

Le souci, c'est qu'avec l'enregistreur j'ai des select.cells, donc même si je trouve la ligne de code qui me permettrait de passer à la ligne suivante, si il y a quelque chose sur la ligne, cela ne marchera pas je pense...

Bref j'ai besoin de votre aide. Pour info j'utilise Excel 2007.

Sinon autre petit problème, sur les graphiques. En fonction des paramètres choisis dans mon projet, j'ai un tableau ou il y a entre 150 et 1000 lignes. Je dois mettre ces données en graphique. Le souci, c'est que je suis obligé de sélectionner les 1000 lignes pour les données sources, pour que cela prenne dans tous les cas toutes les données, mais lorsque je n'ai que par exemple 150 lignes, cela est très moche. Donc ma question: comment avoir une selection automatique des données sources en fonction du nombre de lignes ?


Merci d'avance pour vos réponses

Bon dimanche
 
Dernière édition:

kjin

XLDnaute Barbatruc
Re : Besoin d'aide pour un projet Excel

...trouve la ligne de code qui me permet de passer à la ligne suivante, si il y a quelque chose sur la ligne, cela ne marchera pas je pense...
Il y a plusieurs façon de faire, le tout étant de déterminer quelle est la dernière ligne de ton tableau...
...comment avoir une selection automatique des données sources en fonction du nombre de lignes ?
Il faut rendre dynamique ta plage de données...

Mais, et pour l'une et l'autre de tes questions, sans ton fichier, difficile de t'en dire plus
Penses également que si tu as xl2007, ta question trouverait sa place dans la section idoine du forum, à moins que tu ne joignes un fichier "xls"
A+
kjin
 

edouardgg

XLDnaute Nouveau
Re : Besoin d'aide pour un projet Excel

Il y a plusieurs façon de faire, le tout étant de déterminer quelle est la dernière ligne de ton tableau...

Il faut rendre dynamique ta plage de données...

Mais, et pour l'une et l'autre de tes questions, sans ton fichier, difficile de t'en dire plus
Penses également que si tu as xl2007, ta question trouverait sa place dans la section idoine du forum, à moins que tu ne joignes un fichier "xls"
A+
kjin
Merci de ta réponse
Exact pour la section, désolé je n'avais pas vu.

J'ai créer un petit fichier.

J'ai mis des données sur la première feuille, des données sur la deuxième. L'idée, c'est de coller ces données sur la 3e feuille en A1, B1, C1, ... F1. Puis si je modifie les données, et que je relance la macro, cela les colle en A2, B2, C2..., F2.

Voila je ne sais pas si c'est plus clair.

merci d'avance pour vos réponse
 

Pièces jointes

  • projet excel forum.xls
    17 KB · Affichages: 47

edouardgg

XLDnaute Nouveau
Re : Besoin d'aide pour un projet Excel

Merci beaucoup de ta réponse. C'est exactement cela que je veux.

Seulement, je me suis surement mal exprimé. Mes données sont répartis un peu partout dans plusieurs feuilles de mon classeur Excel. Par exemple, je vais avoir B12 et B14 de la feuille1 à copier, C5 et D14 de la feuille2 etc... Si je ne me trompe pas, ta programmation copie toutes les valeurs présentes sur la feuille 1 et 2 ?... D'où ma question, comment programmer un code qui me permet d'aller chercher précisément les valeurs dont j'ai besoin, de les copier sur une 3ème feuille, tout en permettant de passer à la ligne suivante, si l'opération se renouvelle.

Merci d'avance pour vos réponses et merci beaucoup de ton aide kjin.
 

kjin

XLDnaute Barbatruc
Re : Besoin d'aide pour un projet Excel

Re,
.. Si je ne me trompe pas, ta programmation copie toutes les valeurs présentes sur la feuille 1 et 2 ?...
Si tu as jeté un oeil au code, tu auras vu que la boucle parcours toutes les feuilles de ton classeur sauf la feuille "Feuil3", celle précisément où tu importes les données.
Donc précises si ce n'est pas ce que tu veux.
J'en profite t'indiquer que je n'avais pas envisagé que toutes les feuilles pouvaient être vides dans la macro alors j'ai corrigé au cas où.

Edit : j'ai du corriger (Décalage d'une ligne dans le code !)

A+
kjin
 

Pièces jointes

  • Edouardgg_V2.zip
    9.6 KB · Affichages: 37
Dernière édition:

edouardgg

XLDnaute Nouveau
Re : Besoin d'aide pour un projet Excel

Merci beaucoup de ton aide!

Je ne voulais pas t'importuner en disant cela, d'ailleurs je me suis trompé, c'est bien la preuve que je suis absolument pas au point sur Visual Basic.

J'ai dit cela pour la simple est bonne raison que je ne comprends pas ta programmation :eek:... Je lis et re-lis le code, je ne comprends pas comment la macro sait quelles cellules elle doit copier. Je sais pas si j'ai été clair, mais il y a des cellules que je ne veux pas copier et d'autres que je veux copier sur mes feuilles.... Je ne vois pas comment je peux l'appliquer à mon cas... Il faudrait que je puisse modifier le code pour lui indiquer l'emplacement de la première cellule à copier et à coller, de la deuxième cellule à copier et à coller, de la troisième.... mais je ne sais ou renseigner cela dans le code que tu as créés...

Désolé si je t'ai vexé.
 

kjin

XLDnaute Barbatruc
Re : Besoin d'aide pour un projet Excel

Re,
...
Je ne voulais pas t'importuner en disant cela..
Désolé si je t'ai vexé...
Aurais-je écris qqchose dans ce sens...je ne crois pas, en tout cas telle n'étais pas mon intention. :)
Pour en revenir au principal, la macro teste toutes les cellules non vides de toutes les feuilles et ajoute les valeurs à un tableau temporaire; il ne reste plus ensuite qu'à transférer les valeurs du tableau dans ta feuille.
Mais pour arriver à faire ce que tu demandes, la question essentielle reste de définir comment savoir quelle plage ou cellules tester et dans quelle feuille ?
Et ça, toi seul a la réponse.
A+
kjin
 

edouardgg

XLDnaute Nouveau
Re : Besoin d'aide pour un projet Excel

Je vais prendre un exemple concret, pour me m'expliquer.

J'ai un classeur avec 5 feuilles: Feuill1, Feuill2, Feuill3, Feuill4 et Feuill5.

Sur les 4 premières feuilles, il y a des tableaux avec plusieurs centaines de valeurs. Seules quelques unes d'entre elles m'intéresse:
Feuill1: B1 et C1
Feuill2: B2 et C2
Feuill3: B3 et C3
Feuill4: B4 et C4

La Feuill5 servira de feuille d'archivage. En A2 de la feuill5, j'aimerais mettre la cellule B1 de Feuill1. En B2, j'aimerais mettre la cellule C1 de Feuill1.............. etc
C'est un historique, un archivage.
Lorsque j'aurais enregistrer les valeurs souhaitées, je vais "resimuler" sur mes feuilles, les valeurs changeront, et je voudrais à ce moment là réarchiver les nouvelles valeurs (qui resteront aux mêmes emplacements que les précédentes). Le souci, c'est qu'avec l'enregistreur de macro, j'y arrive, mais lorsque je veux conserver la première ligne collée et ajouter les nouvelles valeurs, cela écrase la première ligne.

En d'autres termes, les nouvelles valeurs devront être collées en A3, B3, C3,... c'est à dire une ligne en dessous des premières valeurs collées.

Je ne sais pas si tu vois mieux ce dont je cherche. Si j'ai le code, après je n'ai plus qu'à changer le nom des cellules pour que cela fonctionne dans mon cas, et changer aussi le nom des feuilles.

Dans tous les cas, merci de ton aide précieuse.

Cordialement,
 
Dernière édition:

kjin

XLDnaute Barbatruc
Re : Besoin d'aide pour un projet Excel

Re,
Pas sûr de comprendre mais bon...
Si tu sais quelles cellules de quelle feuille il te faut recopier, il suffit de déterminer la première ligne vide de ton tableau récapitulatif (ici Derlign) et dans ce cas :
Code:
Sub RECOPIE()
With ActiveSheet
Derlign = .Range("A65000").End(xlUp).Row + 1
    .Range("A" & Derlign & ":B" & Derlign) = Sheets("Feuil1").Range("B1:C1").Value
    .Range("C" & Derlign & ":D" & Derlign) = Sheets("Feuil2").Range("B2:C2").Value
    .Range("E" & Derlign & ":F" & Derlign) = Sheets("Feuil3").Range("B3:C3").Value
    .Range("G" & Derlign & ":H" & Derlign) = Sheets("Feuil4").Range("B4:C4").Value
End With
End Sub
Pas d'autre solution à mon sens parce que je ne suis pas très bien la logique.
A+
kjin
 

edouardgg

XLDnaute Nouveau
Re : Besoin d'aide pour un projet Excel

Salut,

merci de ta réponse! et désolé de venir te répondre aussi tardivement. C'est exactement ce que je voulais. Merci merci

J'ai un autre problème, que je n'arrive pas à résoudre malgré mes bidouillages...

J'ai un tableau sur une feuille, que je souhaite imprimer. Pour cela, j'ai cherché des macros un peu partout sur le forum, j'ai fait un mix et cela donne ca:

Sub impression_tabamort()
'
' fond blanc, zone d'impression & aperçu
Dim temp1(), temp2()
With Range("B3:G1010")
Worksheets("Tableau d'amortissement").Activate
ActiveSheet.PageSetup.PrintArea = Range("B3:G" & .Find("*", .Item(1), , , , xlPrevious).Row).Address
End With
For Each c In [Zone_d_impression]
If c.Interior.ColorIndex <> xlNone Then
n = n + 1
ReDim Preserve temp1(1 To n)
ReDim Preserve temp2(1 To n)
temp1(n) = c.Address
temp2(n) = c.Interior.ColorIndex
c.Interior.ColorIndex = xlNone
End If
Next c
ActiveSheet.PrintPreview ' ou ActiveSheet.PrintOut
For i = 1 To n
Range(temp1(i)).Interior.ColorIndex = temp2(i)
Next i
End Sub

J'ai cette macro pour deux feuilles de mon classeur (avec bien sur des "Worksheets("")" différents). Pour une des feuilles, cela marche parfaitement, à savoir cela cible les données parfaitement, ce qui permet d'utiliser uniquement le nombre de feuilles nécessaires pour l'impression (pas de feuilles vides) et le fond sur l'impression devient blanc, c'est à dire que l'imprimante n'imprime pas la couleur du fond.

Mon seul problème, c'est que sur la 2eme feuille, certaines cellules sont en apparence vides, mais elles comportent des formules (exemple: =SI(A5="";"";*)). D'ou un problème: la zone d'impression descend jusqu'en bas des cellules avec formules, alors que j'aimerais que la zone s'arrête là ou il y a des données visibles.

J'espère que c'est clair.

Merci d'avance pour votre aide.

Bien cordialement,
 

Discussions similaires

Statistiques des forums

Discussions
312 210
Messages
2 086 281
Membres
103 170
dernier inscrit
HASSEN@45