Probléme de Macro - Automatiser le changement de format d'une colonne

sokour

XLDnaute Occasionnel
Bonjour,

Je vous expose mon probleme :
J'ai un fichier avec 2 onglets et je compares ces 2 feuilles avec la macro qui supprime les lignes similaires selon des colonnes ayant les memes critères.

Le problème est que dans l'une des onglet la colonne a changer comporte des espaces pour les chiffres et ne permet donc pas une comparaison optimale.

J'aimerai utuliser la fonction substitue en automatiser mais comme je suis début je ne vois pas comment faire.

Je vous joint ma feuille et la macro ( la colonne concernée est dans la feuille , colonne O)

Mercii:confused:
 

Pièces jointes

  • Compar.XLS
    48 KB · Affichages: 73
  • Compar.XLS
    48 KB · Affichages: 77
  • Compar.XLS
    48 KB · Affichages: 79

Raja

XLDnaute Accro
Re : Probléme de Macro - Automatiser le changement de format d'une colonne

Re,

Je n'ai toujours pas compris ce que tu attends comme résultat. Essaye ce code à la place :

Code:
If Trim(F1.Cells(I, "C")) = Trim(f2.Cells(k, "O")) _
Or Trim(F1.Cells(I, "E")) = Trim(f2.Cells(k, "I")) Then

Et dis-nous si c'est le bon résultat.
 

sokour

XLDnaute Occasionnel
Re : Probléme de Macro - Automatiser le changement de format d'une colonne

non cela ne marches pas.

Je veux juste pour la colonne O de la feuille F : que l'espace pour les chiffres disparaisset afin de pouvoir comparer correctement les lignes .
 

Gael

XLDnaute Barbatruc
Re : Probléme de Macro - Automatiser le changement de format d'une colonne

Bonjour Sokour, Raja, PierreJean,

Le problème c'est que ce n'est pas un espace mais un caractère spécial.

En formules, tu peux le supprimer en mettant:

Code:
=SUBSTITUE(O1;CAR(160);"")

En macro, je ne connais pas l'equivalent de CAR() que l'on ne peut pas utiliser en VBA.

@+

Gael
 

Raja

XLDnaute Accro
Re : Probléme de Macro - Automatiser le changement de format d'une colonne

Bonjour,

Essaye ce code suivant :

Code:
Sub comparaison()
  Application.ScreenUpdating = False
    Set F1 = Sheets("B")
    Set f2 = Sheets("F")
    For k = F1.Range("C" & "65000").End(xlUp).Row To 1 Step -1
       For j = f2.Range("i" & "65000").End(xlUp).Row To 1 Step -1
         If Val(Trim(F1.Cells(k, "C"))) = Val(Trim(f2.Cells(j, "O"))) _
            And Val(Trim(F1.Cells(k, "E"))) = Val(Trim(f2.Cells(j, "I"))) Then
            F1.Rows(k).Delete
            f2.Rows(j).Delete
         End If
       Next j
    Next k
  Application.ScreenUpdating = True
End Sub
 
Dernière édition:

sokour

XLDnaute Occasionnel
Re : Probléme de Macro - Automatiser le changement de format d'une colonne

Salut je viens d'essayer à linstant ta macro, mais le problème est toujours présent.

As tu regardé le fichier c'est un caractère spécial comme la précisé gael?

Merci
 

vbacrumble

XLDnaute Accro
Re : Probléme de Macro - Automatiser le changement de format d'une colonne

Bonjour



Ou
Code:
Replace(Chaine, Chr(160), vbnullstring)

Ou chaine est la valeur à traiter

Donc avec le code issu du présent fil
Code:
If F1.Cells(I, "C") =[COLOR="Red"] Replace(f2.Cells(k, "O").Text, chr(160), vbnullstring)[/COLOR] _
            And F1.Cells(I, "E") = f2.Cells(k, "I") Then
 

sokour

XLDnaute Occasionnel
Re : Probléme de Macro - Automatiser le changement de format d'une colonne

je suis novice, pourrait tu voir en fonction de ma macro comment insérer la partie que m'a dictée ci dessus.

(j'ai regardé ce n'est pas un espace mais bien un caractère spécial lors de l'import )
 

sokour

XLDnaute Occasionnel
Re : Probléme de Macro - Automatiser le changement de format d'une colonne

Lorsque j'execute la macro avec ta modification elle bug sur ta ligne


If F1.Cells(I, "C") = Replace(f2.Cells(k, "O").Text, Chr(160), vbNullString) _
 

Gael

XLDnaute Barbatruc
Re : Probléme de Macro - Automatiser le changement de format d'une colonne

Re,

Il ne devrait pas y avoir de bug, j'ai testé chez moi et c'est OK avec le code suivant:

Code:
Sub comparaison()
Application.ScreenUpdating = False
    Set F1 = Sheets("B")
    Set f2 = Sheets("F")
    For I = F1.Range("C" & "65000").End(xlUp).Row To 1 Step -1
       For k = f2.Range("I" & "65000").End(xlUp).Row To 1 Step -1
         If F1.Cells(I, "C") = Replace(f2.Cells(k, "O").Text, Chr(160), vbNullString) _
            And F1.Cells(I, "E") = f2.Cells(k, "I") Then
            F1.Rows(I).Delete
            f2.Rows(k).Delete
         End If
       Next k
    Next I
       
End Sub

@+

Gael
 

sokour

XLDnaute Occasionnel
Re : Probléme de Macro - Automatiser le changement de format d'une colonne

Bonjour je reviens car je voudrais optimiser la macro :
en effet a la fin de ma macro il y a des lignes dans le montant dans une feuille est égale a la somme de 2 lignes ( colonne O ) sachant que le critere prix est le meme

Exemple

feuille b

1000 45€

feuille F

500 45€
500 45€
 

pierrejean

XLDnaute Barbatruc
Re : Probléme de Macro - Automatiser le changement de format d'une colonne

Re

Veux_tu regarder ce qu'il se passe sur les dernieres lignes des feuilles B et F de ce fichier (lignes ajoutées avec les criteres comme tu les expose) lorsque tu lances la macro comparaison ?
 

Pièces jointes

  • Compar_b.zip
    14.2 KB · Affichages: 27

Discussions similaires

Statistiques des forums

Discussions
312 251
Messages
2 086 625
Membres
103 269
dernier inscrit
SamirSEK20