mandou01
Messages postés5Date d'inscriptionjeudi 17 octobre 2013StatutMembreDernière intervention18 octobre 2013
-
17 oct. 2013 à 19:51
mandou01
Messages postés5Date d'inscriptionjeudi 17 octobre 2013StatutMembreDernière intervention18 octobre 2013
-
18 oct. 2013 à 14:43
Bonjour à tous,
J'aurais besoin d 'aide pour développer une macro vba. J'arrive à comprendre les macros, mais en créer une moi-même de toutes pièces c'est une autre histoire !
Voilà ce que je voudrais faire.
J'ai 2 fichiers excel :
- fichier 1 = facture
- fichier 2 = extraction
Dans chacun des fichiers, j'ai 1 feuille avec les même colonnes.
- n° d'expédition
- code postal de livraison
- poids
- prix
Ce que je voudrais pouvoir faire, c'est comparer les données du fichier "extraction" et voir celles qui ne sont pas / sont différentes du fichier "facture", soit en les copiant dans une autre feuille, soit en les mettant en surbrillance dans le fichier "facture". La clé de recherche serait le n° d'expédition.
Mon inquiétude : il y 2500 lignes dans chacun des fichiers, et il faut balayer toutes les cellules. C'est faisable en vba ?
Merci infiniment pour vos précieuses réponses, je dois rendre mon projet la semaine prochaine, j'ai peur d'avoir été trop ambitieuse...
ucfoutu
Messages postés18038Date d'inscriptionlundi 7 décembre 2009StatutModérateurDernière intervention11 avril 2018211 17 oct. 2013 à 21:31
Bonjour,
Si je comprends bien, ta question est donc là :
"Mon inquiétude : il y 2500 lignes dans chacun des fichiers, et il faut balayer toutes les cellules. C'est faisable en vba ?"
La réponse est oui.
mandou01
Messages postés5Date d'inscriptionjeudi 17 octobre 2013StatutMembreDernière intervention18 octobre 2013 18 oct. 2013 à 08:55
Bonjour,
merci pour ce bout de réponse, je suis rassurée sur la faisabilité de mon projet. Par contre, je me rends compte quand dans mes compétences limités, je ne sais pas comparer des feuilles de deux fichiers différents.
Je sais faire une macro qui lit des cellules, mais pas les comparer... Help !
ucfoutu
Messages postés18038Date d'inscriptionlundi 7 décembre 2009StatutModérateurDernière intervention11 avril 2018211 18 oct. 2013 à 09:22
Ce n'était pas un "bout de réponse", mais la réponse à la SEULE question que ru avais posée.
Bon ...
Et ru ne poses toujours pas de question claire ..
"Je sais faire une macro qui lit des cellules, mais pas les comparer."
appelle, par exemple, la réponse suivante (et ce n'est pas ce que tu veux..) :
deux valeurs valeur1 et valeur2 sont identiques si valeur1 = valeur2 et différentes si valeur1 <> valeur2
Bon ... redevenons sérieux (surtout toi, dans tes formulations de demande) ===>>
Il te faut, pour chaque plage de données, la parcourir en boucle et, pour chacune des valeurs ainsi lues, aller voir si elle existe dans l'autre plage (intéresse-toi par exemple à l'utilisation de WorkSheetFunction.countif .)..
Reviens avec le code tenté sur ces bases, si encore en difficulté..
Vous n’avez pas trouvé la réponse que vous recherchez ?
mandou01
Messages postés5Date d'inscriptionjeudi 17 octobre 2013StatutMembreDernière intervention18 octobre 2013 18 oct. 2013 à 09:41
je ne suis visiblement pas claire dans ce que je dis, c'est bien dommage !
Donc ma question reformulée :
je veux comparer fichier 1 et fichier 2
chercher dans fichier 1, valeur 1 (= n° expédition), trouver sa correspondance dans fichier 2 (comme une recherchev) et à partir de cette valeur, comparer les valeurs des colonnes suivantes .
Question claire donc : comment faut-il faire ?
Exemple
fichier 1
n° expédition dans colonne A
Code postal dans colonne B
prix dans colonne C
poids dans colonne D
fichier 2
n° expédition dans colonne A
Code postal dans colonne B
prix dans colonne C
poids dans colonne D
Mais pas forcément dans le même ordre, etavecdes écarts.
Il faut que valeur de la cellule 1 colonne A fichier 1 soit retrouvée dans la colonne A fichier 2 et que à partir de là, on vienne faire valeur colonne B fichier 1 = valeur colonne B fichier 2 ? Si oui, on fait pareil dans colonne C, si valeurs = on passe à colonne D, si toutes les valeurs sont égales, on passe à la cellule 2 colonne A fichier 1 et on compare de la même façon.
S'il y a un écart (ex : valeur colonne B fichier 1 <> valeur colonne B fichier 2), on met en rouge par exemple et on continue quand même à comparer les autres colonnes.
Je voudrais mettre un imprim écran, comment faire ?
ucfoutu
Messages postés18038Date d'inscriptionlundi 7 décembre 2009StatutModérateurDernière intervention11 avril 2018211 18 oct. 2013 à 11:24
"Il faut que valeur de la cellule 1 colonne A fichier 1 soit retrouvée dans la colonne A fichier 2"
Utilisation de la mérhode Find (rubrique Range.Find de ton aide VBA. Elle y est assortie d'un exemple).
commence par cela, déjà (en te rappelant la règle : une seule question spécifique et parfaitement isolée par discussion, accompagnée du code au moins tenté)
mandou01
Messages postés5Date d'inscriptionjeudi 17 octobre 2013StatutMembreDernière intervention18 octobre 2013 18 oct. 2013 à 11:33
j'ai pensé à un truc comme ça...
Sub Macro1()
'
' Macro1 Macro
'
Dim extraction As Worksheet
Dim facture As Worksheet
Dim derligne_extraction As Long, derligne_facture As Long
Dim i As Integer, j As Integer
For i = 2 To derligne_extraction
For j = 2 To derligene_facture
If Sheets("facture").Cells(i, 1).Value <> "" Then
uata = Sheets("facture").Cells(i, 1).Value
fin = i + 1
Do While fin < Sheets("facture").Range("A2").End(xlDown).Row
If Sheets("facture").Cells(fin, 1).Value = "" Or Sheets("facture").Cells(fin, 1).Value = uata Then
fin = fin + 1
Else
Exit Do
End If
Loop
fin = fin - 1
While j < fin
uata = Sheets("facture").Cells(i, 1).Value
uata_extraction = Sheets("extraction").Cells(j, 1).Value
If uata = uata_extraction Then
If Sheets("facture").Cells(uata, 2) = Sheets("extraction").Cells(uata_extraction, 2) Then
If Sheets("facture").Cells(uata, 3) = Sheets("extraction").Cells(uata_extraction, 3) Then
If Sheets("facture").Cells(uata, 4) = Sheets("extraction").Cells(uata_extraction, 4) Then
Else
If Sheets("facture").Cells(uata, 2) <> Sheets("extraction").Cells(uata_extraction, 2) Then
Sheets("facture").Cells(uata, 2).ColorIndex = 45
If Sheets("facture").Cells(uata, 3) <> Sheets("extraction").Cells(uata_extraction, 3) Then
Sheets("facture").Cells(uata, 3).ColorIndex = 45
If Sheets("facture").Cells(uata, 4) <> Sheets("extraction").Cells(uata_extraction, 4) Then
Sheets("facture").Cells(uata, 4).ColorIndex = 4
Relis-moi :
"Utilisation de la méthode Find (rubrique Range.Find de ton aide VBA. Elle y est assortie d'un exemple).
commence par cela, déjà
________________________
Réponse exacte ? => "REPONSE ACCEPTEE" facilitera les recherches.
Pas d'aide en ligne installée ? => ne comptez pas sur moi pour simplement répéter son contenu. Je n'interviend