× Aidez la recherche contre le COVID-19 avec votre ordi ! Rejoignez l'équipe PC Astuces Folding@home
 > Tous les forums > Forum Bureautique
 rassembler deux feuilles excelSujet résolu
Ajouter un message à la discussion
Page : [1] 
Page 1 sur 1
valpat35
  Posté le 31/08/2016 @ 11:33 
Aller en bas de la page 
Petit astucien

Bonjour

j'ai besoin de comparer deux feuilles de structure identique

j'ai 5 colonnes dans la première feuille: ref, nom, fournisseur, quantité 2014, prix 2014

j'ai 5 colonnes dans la deuxième feuille: ref, nom, fournisseur, quantité 2015, prix 2015

je voudrais les rassembler dans une troisième feuille : ref , nom, fournisseur, quantité 2014, quantité 2015, prix 2014, prix 2015.

j'ai trouvé une macro sur le net, me permettant de le faire mais si une ref n'est pas présente en 2014 ou 2015 , cette ref n'apparait pas dans le fichier final.

De plus je n'arrive pas à changer le nom des feuilles dans le fichier et la macro ( feuil1 en 2014, feuil2 en 2015, feuil3 en conso)

j'ai essayé avec les TDC mais je n'y arrive pas non plus.

voici un fichier test si joint

http://www.cjoint.com/c/FHFjqFkJ7pO

les tableaux sont sur des feuilles différentes mais peuvent etre mis sur une seule si cela est plus facile.

merci de votre aide à tous



[Configuration automatique à compléter]
Windows 7
Autre 5.0



Modifié par valpat35 le 31/08/2016 11:34
Publicité
Xavier78
 Posté le 31/08/2016 à 20:45 
Aller en bas de la page Revenir au message précédent Revenir en haut de la page
Petit astucien

Bonsoir,

Pourquoi, tout simplement, ne pas créer une troisième feuille de synthèse en insérant des formules entrainant le report des doinnées figuirant en feuilles 1 et 2 et que vous souhaitez comparerer.

Pas besoin de macro pour ça.

Bien cordialement

valpat35
 Posté le 01/09/2016 à 08:08 
Aller en bas de la page Revenir au message précédent Revenir en haut de la page
Petit astucien

Bonjour Xavier78

merci de ton aide

Je ne connais pas les formules pour faire cela

mon fichier réel contient près de 600 lignes.

cordialement

w36xb2w
 Posté le 01/09/2016 à 11:56 
Aller en bas de la page Revenir au message précédent Revenir en haut de la page
  Astucien

Bonjour

Il faut que ta liste de ref nom et fournisseur soit identique sur une feuille

ensuite tu crées une feuille annuelle puis tu lies cette liste il te suffit d'y ajouter tes valeurs

Tu ajoutes ce que tu veux sur la feuille 1

Tu ajoutes une nouvelle feuille

tu recopies la feuille précédente tu renommes les années et modifie les valeurs

Il te suffit sur les feuilles annuelles de faire glisser le curseur pour ajouter les lignes supplémentaires

tu ajoutes les années sur la feuille de récap

ferrand
 Posté le 01/09/2016 à 15:35 
Aller en bas de la page Revenir au message précédent Revenir en haut de la page
  Astucien

Bonjour,

Proposition :

Sub SynthèseConso()
Dim d As Object, T(), et, qp, rnf, n%, i%, j%
Set d = CreateObject("Scripting.Dictionary")
With Worksheets("Feuil1")
For i = 1 To 5
et = et & ";" & .Cells(1, i)
Next i
n = .Cells(.Rows.Count, 1).End(xlUp).Row
For i = 2 To n
rnf = .Cells(i, 1) & "|" & .Cells(i, 2) & "|" & .Cells(i, 3)
qp = ";" & .Cells(i, 4) & ";" & .Cells(i, 5)
d(rnf) = qp
Next i
End With
With Worksheets("Feuil2")
For i = 4 To 5
et = et & ";" & .Cells(1, i)
Next i
n = .Cells(.Rows.Count, 1).End(xlUp).Row
For i = 2 To n
rnf = .Cells(i, 1) & "|" & .Cells(i, 2) & "|" & .Cells(i, 3)
qp = ";" & .Cells(i, 4) & ";" & .Cells(i, 5)
If d.exists(rnf) Then
qp = d(rnf) & qp
Else
qp = ";;" & qp
End If
d(rnf) = qp
Next i
End With
ReDim T(d.Count, 1 To 7): et = Split(et, ";")
For i = 1 To 7
T(0, i) = et(i)
Next i
et = T(0, 5): T(0, 5) = T(0, 6): T(0, 6) = et: n = 0
For Each rnf In d.keys
qp = Split(d(rnf), ";"): et = Split(rnf, "|"): n = n + 1
If UBound(qp) < 4 Then qp = Split(d(rnf) & ";;", ";")
T(n, 1) = CInt(et(0)): T(n, 2) = et(1): T(n, 3) = et(2)
For i = 1 To 3 Step 2
If qp(i) <> "" Then T(n, 4 + i \ 2) = CLng(qp(i))
If qp(i + 1) <> "" Then T(n, 6 + i \ 2) = CDbl(qp(i + 1))
Next i
Next rnf
For i = 1 To UBound(T, 1) - 1
For j = i + 1 To UBound(T, 1)
If T(j, 1) < T(i, 1) Then
For n = 1 To 7
et = T(j, n): T(j, n) = T(i, n): T(i, n) = et
Next n
End If
Next j
Next i
With Worksheets("Feuil3")
.UsedRange.ClearContents
With .Range("A1").Resize(UBound(T, 1) + 1, 7)
.Value = T
.HorizontalAlignment = xlCenter
With .Borders
.LineStyle = xlContinuous
.Weight = xlThin
End With
End With
End With
End Sub

Cordialement.

http://www.cjoint.com/c/FIbnJf7t4Y8

valpat35
 Posté le 01/09/2016 à 16:03 
Aller en bas de la page Revenir au message précédent Revenir en haut de la page
Petit astucien

bonjour à tous et merci

j'ai testé la solution de w36xb2w, cela fonctionne mais est un peu lourd à mettre en œuvre.

Je n'ai pas pu ouvrir le fichier de Ferrand, j'ai un message d'erreur me disant que le fichier ou l'extension n'est pas valide, ma version d' Excel est 2010.

je teste la macro de Ferrand demain et vous tiens au courant

Cordialement

ferrand
 Posté le 01/09/2016 à 16:09 
Aller en bas de la page Revenir au message précédent Revenir en haut de la page
  Astucien

Et quelle est l'extension ?

J'ai eu la même chose pour récupérer ton fichier. L'extension était .xlsx, que j'ai modifiée (après enregistrement) en .xlsm...

J'ai l'impression que CJoint modifie l'extension des fichiers avec macro, ce n'est pas la première fois que je rencontre ce message...

valpat35
 Posté le 01/09/2016 à 17:24 
Aller en bas de la page Revenir au message précédent Revenir en haut de la page
Petit astucien

Effectivement Ferrand, l'extension est .xlsx au lieu de xlsm.

aprés correction le fichier s'ouvre correctement et cela correspond exactement à ce que je cherche.

je teste avec les données réelles demain matin et vous tiens au courant.

merci

valpat35
 Posté le 02/09/2016 à 09:17 
Aller en bas de la page Revenir au message précédent Revenir en haut de la page
Petit astucien

Bonjour Ferrand

cela fonctionne ,

juste un petit problème, dans mon exemple il n'y a pas de trou dans les ref de l'année 2014.

dans la réalité, une ref d'un produit supprimé ( obsolète ou remplacé par un autre plus performant) n'est pas réattribué ce qui occasionne des trous.

j'ai introduis la liste complète des N° de 1 à 10000 en colonne A de la feuil 2014, trié la feuille par ref puis supprimé les doublons et la cela fonctionne.

cordialement

Publicité
ferrand
 Posté le 02/09/2016 à 17:53 
Aller en bas de la page Revenir au message précédent Revenir en haut de la page
  Astucien

Bonjour,

J'ai opéré en fonction du modèle. S'il ne reflète pas exactement la configuration des données...

Pour les doublons, tout dépend exactement en quoi ils sont doublons. Un doublon sur réf. nom fournisseur, dont la concaténation fournit les clés d'éléments de dictionnaire aurait été naturellement éliminé, une clé devant être unique. Seule la donnée du dernier élément doublonné ainsi aurait été prise en compte puisque pas de test pour vérifier une duplication d'éléments...

Cordialement.

valpat35
 Posté le 05/09/2016 à 07:58 
Aller en bas de la page Revenir au message précédent Revenir en haut de la page
Petit astucien

bonjour et merci à tous de votre aide

Ferrand, désolé pour le modèle inexact,

je n'ai pas compris ce que tu dis à propos des doublons , mais cela fonctionne donc encore merci.

cordialement

à+ sur le forum

Page : [1] 
Page 1 sur 1

Vous devez être connecté pour poster des messages. Cliquez ici pour vous identifier.

Vous n'avez pas de compte ? Créez-en un gratuitement !


Les bons plans du moment PC Astuces

Tous les Bons Plans
180 €Smartphone 6.53 pouces Xiaomi Redmi Note 8 Pro (FHD+, 6Go/64Go) à 180 €
Valable jusqu'au 27 Novembre

Amazon fait une promotion sur le smartphone 6.53 pouces Xiaomi Redmi Note 8 Pro qui passe à 180 € livré gratuitement au lieu de 200 €. Ce smartphone dispose d'un écran 6.53 pouces FHD+ (2340x1080 pixels), un processeur 8 coeurs Helio G90T, 6 Go de mémoire, de 64 Go d'espace de stockage extensible par microSD, d'un APN 64 +8 +2 + 2 MPixels et d'un APN 20 MP avant, du bluetooh, du Wifi, d'un lecteur d'empreintes digitales. Il est compatible avec les fréquences 2G, 3G et 4G. Le tout tourne sous Android 9 avec une surcouche Xiaomi. La batterie est de haute capacité 4500 mAh et est compatible charge rapide.


> Voir l'offre
248,99 €SSD externe portable USB 3.1 SanDisk Extreme 2 To à 248,99 €
Valable jusqu'au 27 Novembre

Amazon fait une promotion sur le SSD externe portable USB 3.1 SanDisk Extreme 2 To qui passe à 248,99 € livré gratuitement alors qu'on le trouve à 320 € ailleurs. Le disque SSD SanDisk Extreme portable est plus de deux fois plus petit que la taille de votre smartphone et fournit jusqu'à 5 fois la vitesse d'un disque dur portable. Apprenez à travailler en quelques secondes, transférez de grandes bibliothèques de vidéos et de photos à des vitesses pouvant atteindre 550 Mo/s. Vous ne craindrez pas de l'emporter partout avec vous grâce à sa conception robuste et résistante avec un coeur de SSD résistant aux chocs. Le logiciel SanDisk inclu SecureAccess peut crypter vos fichiers personnels. Garantie 3 ans. Résiste à l'eau (IP55). Interface : USB 3.1 Type A et C.


> Voir l'offre
54,95 €SSD Crucial P2 500 Go (3D NAND, NVMe, PCIe, M.2, 2400 Mo/s) à 54,95 €
Valable jusqu'au 30 Novembre

Materiel.net fait une promotion sur le SSD Crucial P2 500 Go (3D NAND, NVMe, PCIe, M.2) qui passe à 54,95 €.  On le trouve ailleurs à partir de 70 €. Ce SSD offre des vitesses de lecture/écriture séquentielle allant jusqu’à 2 400/ 1 900 Mo/s. Il est garanti 5 ans.


> Voir l'offre

Sujets relatifs
Aucun sujet pertinent lié trouvé
 > Tous les forums > Forum Bureautique