Aide sur unee macro, erreur mais pk

Résolu/Fermé
manautop Messages postés 138 Date d'inscription lundi 27 novembre 2006 Statut Membre Dernière intervention 24 janvier 2013 - 12 nov. 2009 à 15:00
manautop Messages postés 138 Date d'inscription lundi 27 novembre 2006 Statut Membre Dernière intervention 24 janvier 2013 - 19 nov. 2009 à 10:48
Bonjour,
j ai developpe cette macro qui permet confronter deux tableaux avec plus ou moins les mm refferences etc en me creant un troisieme tableau qui met sur la mm lignes les caracteristique (qui different d une annee a l autre) d une mm reference mais cela bug

Sub testcompare()
Dim ws1 As Worksheet
Dim ws2 As Worksheet
Dim ws3 As Worksheet
Dim i1
Dim i2
Dim i3
Dim k
Dim kk
Dim z
Dim maxRow1 As Integer
Dim maxRow2 As Integer


Set ws1 = Worksheets(1)
Set ws2 = Worksheets(2)
Set ws3 = Worksheets(3)

maxRow1 = ws1.ActiveSheet.UsedRange.Rows.Count
maxRow2 = ws2.ActiveSheet.UsedRange.Rows.Count
i1 = ws1.Range("A1").End("4").Row
i2 = ws2.Range("A1").End("4").Row
With ws1
For k = 1 To maxRow1
z = .Range("A" & k)
For kk = 1 To maxRow2
If z = ws2.Range("A" & kk) Then
ws3.Range("A" & i3 + 1) = z
ws3.Range("B" & i3 + 1) = .Range("B" & k)
ws3.Range("C" & i3 + 1) = .Range("C" & k)
ws3.Range("D" & i3 + 1) = .Range("D" & k)
ws3.Range("E" & i3 + 1) = .Range("E" & k)
ws3.Range("F" & i3 + 1) = .Range("F" & k)
ws3.Range("G" & i3 + 1) = ws2.Range("B" & kk)
ws3.Range("H" & i3 + 1) = ws2.Range("C" & kk)
ws3.Range("I" & i3 + 1) = ws2.Range("D" & kk)
ws3.Range("J" & i3 + 1) = ws2.Range("E" & kk)
ws3.Range("K" & i3 + 1) = ws2.Range("F" & kk)
i3 = i3 + 1
End If
Next
Next
End With
End Sub

de plus si on enleve tout ce qui a attrait au maxRow le code est fonctionnel mais ne me donne pas en fin de tableau les reference unique... quelau un aurait il une solution ??
A voir également:

28 réponses

Bonjour,
Pour se faire une idée du problème, est-il possible de recevoir un exemple des 2 tableaux avec quelques données ainsi que le résultat à obtenir sur le troisième.
0
manautop Messages postés 138 Date d'inscription lundi 27 novembre 2006 Statut Membre Dernière intervention 24 janvier 2013 3
12 nov. 2009 à 21:39
coucou,
j ai laisse mon portable au boulot je t envoi ca des demain vers 10h00 pour toi... je suis pas en france lol

merci
0
Bonjour,
Merci, moi je suis en Suisse.
Bonne fin de soirée.
0
manautop Messages postés 138 Date d'inscription lundi 27 novembre 2006 Statut Membre Dernière intervention 24 janvier 2013 3
13 nov. 2009 à 10:32
COUCOU ,
c est re moi, dsl du retard impossible de me lever ce matin lol

donc voila le lien http://www.cijoint.fr/cjlink.php?file=cj200911/cijSY260Qc.xls


donc la fichier original se trouve sur la derniere feuille "Oct 08 Oct 09"
pour les besoin de la macro je separe les deux tableau chacun sur sa propre page, pourquoi ? parce que je veux que cela soit utilisabe poour d autre tableau facilement
et si tu lance cette macro que j ai developpe au debut et qui marche

Sub testcompare()
Dim ws1 As Worksheet, ws2 As Worksheet, ws3 As Worksheet, i1, i2, i3, k, kk, z
Set ws1 = Worksheets(1)
Set ws2 = Worksheets(2)
Set ws3 = Worksheets(3)
i1 = ws1.Range("A1").End("4").Row
i2 = ws2.Range("A1").End("4").Row
With ws1
For k = 1 To 2029
z = .Range("A" & k)
For kk = 1 To 2049
If z = ws2.Range("A" & kk) Then
ws3.Range("A" & i3 + 1) = z
ws3.Range("B" & i3 + 1) = .Range("B" & k)
ws3.Range("C" & i3 + 1) = .Range("C" & k)
ws3.Range("D" & i3 + 1) = .Range("D" & k)
ws3.Range("E" & i3 + 1) = .Range("E" & k)
ws3.Range("F" & i3 + 1) = .Range("F" & k)
ws3.Range("G" & i3 + 1) = ws2.Range("B" & kk)
ws3.Range("H" & i3 + 1) = ws2.Range("C" & kk)
ws3.Range("I" & i3 + 1) = ws2.Range("D" & kk)
ws3.Range("J" & i3 + 1) = ws2.Range("E" & kk)
ws3.Range("K" & i3 + 1) = ws2.Range("F" & kk)
i3 = i3 + 1
End If
Next
Next
End With
End Sub


tu as en page trois le resultat que je veux, enfin presque parce que j ai pas les reference qui sont presente une seul fois d eplus je voudrais automatiser la prise en compte des lignes
For k = 1 To 2029
For kk = 1 To 2049
c est a dire qu au lieu de 2049 ou autre chiffre se soit la macro elle mm qui prenne en compte toute les ligne utilise


pourquoi je me casse la tete alors que c est fonctionnel ? parce que j essaye de faire des macro qui soit utilisable le plus simplement possible par les gens c est a dire qui necessite pas d aller dans l editeur
voila merci
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Bonjour,
Merci, la réponse va suivre , patience !
En marge, vous êtes dans quel pays …
Bon week-end
0
manautop Messages postés 138 Date d'inscription lundi 27 novembre 2006 Statut Membre Dernière intervention 24 janvier 2013 3
13 nov. 2009 à 11:57
moi je suis en ecosse dans le sud de l ecosse a dumfries, il pleut envie de rester au lit
0
Bonjour,
Est-ce qu’il est possible d’avoir plusieurs fois la même référence (exemple : WJWAT01) dans la colonne [A] …… ? Oui / Non
Si la référence est unique alors on modifie la boucle de la feuille 2 en une recherche sur la colonne [A], se sera plus rapide !
0
manautop Messages postés 138 Date d'inscription lundi 27 novembre 2006 Statut Membre Dernière intervention 24 janvier 2013 3
13 nov. 2009 à 15:59
coucou, non ce n est pas possible, il s agit de references des produits que l on a sur l annee doc tableau 1 annee 2008 et tableau 2 annee 2009
0
Bonjour,
Est-ce se que vous désirez : https://www.cjoint.com/?lnqsuFRfGR
0
manautop Messages postés 138 Date d'inscription lundi 27 novembre 2006 Statut Membre Dernière intervention 24 janvier 2013 3
13 nov. 2009 à 16:53
re coucou merci pour ta macro (je te tutoies lol)
mais le probleme reste le meme, sur l exemple il y a 44 lignes et apres la macro excel n en affiche que 35 car il ne met pas les references presentes une seule fois il me serait pratique de les afficher de la meme facon que sur la page trois (dans la bonne annee) en fin du reusltat ou ailleur pour etre plus simple

cela dit je vais dorenavant documenter mes macros et ton code est bien plus propre.

a la limite on pourrait peut etre relancer une comparaison a la suite qui afficherais les resultas non concordant ??


dsl pour les accents, je suis en qwerty
0
Bonjour,
Merci je n'avais pas bien compris.
La correction va suivre avec en prime un autre manière de faire.
0
Bonjour,
J’ai apporté les modifications pour tenir compte de votre dernier courriel.
Voir le commentaire sur la feuille [Sheet1] : https://www.cjoint.com/?lnwWENLmK7
0
manautop Messages postés 138 Date d'inscription lundi 27 novembre 2006 Statut Membre Dernière intervention 24 janvier 2013 3
16 nov. 2009 à 09:50
coucou ponpon
dsl pour le retard mais c est le week end j ai visite un peu l ecosse
merci c est ce a quoi je voulais arriver sauf lol dsl, que si j ai plus de ligne en feuille deux il s arrete au nombre de lignes de la page 1... lol
et merci pour toute les annotations sur la macro ca explique plein de truc
0
Merci pour le courriel.
Au passage il est différent de celui du poste 13 … bizarre.
Copie :
coucou ponpon
merci c est ce a quoi je voulais arriver sauf lol dsl, que si j ai plus de ligne en feuille deux il s arrete au nombre de lignes de la page 1... lol
et merci pour toute les annotations sur la macro ca explique plein de truc
Voici la version qui tient compte des grandeurs des 2 fichiers : https://www.cjoint.com/?lqlqZACkrl
0
manautop Messages postés 138 Date d'inscription lundi 27 novembre 2006 Statut Membre Dernière intervention 24 janvier 2013 3
16 nov. 2009 à 11:30
parce que je l ai edite de suite apres l avoir poste, parce que j ai oublie en me relisant de me excuser de ne pas avoir ete la du week end, alors que tu m as poste une reponse ce week end
0
manautop Messages postés 138 Date d'inscription lundi 27 novembre 2006 Statut Membre Dernière intervention 24 janvier 2013 3
16 nov. 2009 à 11:56
re coucou

je te mets le fichier em entiers parce que j ai un probleme avec ta mecro mais je sais pas d ou lool parce que avec l exemple ca marche, mais avec le fichier que je te joint a la fin j ai un espace vide des deux cotes et ensuite encore des referneces

http://www.cijoint.fr/cjlink.php?file=cj200911/cijSMl4zFe.xls

de plus avec ce que tu m as corrige pour etre sur qu il ny a aucune ligne vide dans les tableaux j execute la macro suivante


Sub supp_lignes()


'détermine le numéro de la dernière ligne utilisée
dernLigne = ActiveSheet.UsedRange.Row + ActiveSheet.UsedRange.Count - 1

'désactive la mise à jour de l'écran afin d'accélérer les traitements
Application.ScreenUpdating = False

'Pour toutes les lignes en partant de la dernière

For I = dernLigne To 1 Step -1

'La fonction Excel CountA correspond à =NBVAL
If Application.WorksheetFunction.CountA(Rows(I)) = 0 Then
Rows(I).Delete Shift:=xlUp
End If
Next I
End Sub
0
Bonjour,
D'accord pour le poste 16, je vois cela cet après-midi.
0
Merci, c'est clair maintenant.
0
manautop Messages postés 138 Date d'inscription lundi 27 novembre 2006 Statut Membre Dernière intervention 24 janvier 2013 3
16 nov. 2009 à 12:10
pas de probleme , merci pour votre aide, et surtout pour votre technique bougrement plus efficace, rapide que la mienne, serais ce l experience... lol vivement que j arrive a ce niveau
0
Bonjour,
Eh bien quelque fois l'expérience vient avec l'âge et en plus se n'est pas ma profession, alors courage et de la persévérance...
J’ai bien regardé le fichier, tout semble correcte … sauf qu’il n’y a pas la procédure que vous avez utilisé, alors je vais contrôler avec la mienne !
0
manautop Messages postés 138 Date d'inscription lundi 27 novembre 2006 Statut Membre Dernière intervention 24 janvier 2013 3
16 nov. 2009 à 16:01
bonjour,
j ai utilise votre procedure du poste 14
0