VBA utilisation de IF Then IF HELP!!!

lema

XLDnaute Nouveau
Bonjour à tous
Je suis nouvelle dans le monde VBA et je galère !!
Je veux utiliser la fonction If then If mais ça ne marche pas
Il faut que la macro compare si le contenu de la Feuil1.cells (i,1) est égal au contenu de la Feuil2.cells ( n,11) si cette condition est exacte, il faut qu'elle compare si le contenu la Feuil1.cells (i,3) est <> du contenu de la Feuil2.cells ( n, 16) si c'est deux conditions sont prouvées le Feuil1.Cells (i,5) = " ecarts de montants"

Voilà j'ai essayé de mettre le code en forme mais ça ne marche pas : ( !! j'ai vraiment besoins de votre aide car je suis complètement bloquée

J'ai aussi attaché le fichier avec l'exemple

Voici le code

For i = 2 To totalrowsf1
For n = 2 To totalrowsf2

If (Feuil1.Cells(i, 1).Value = Feuil2.Cells(n, 11).Value) Then If (Feuil1.Cells(i, 3).Value <> Feuil2.Cells(n, 16).Value) Then Feuil1.Cells(i, 5).Value = "Attention Ecart montant" Else Feuil1.Cells(i, 5).Value = "rien à signaler"

Next
Next



Merci à tous pour vos conseils et votre aide
Lema
 

Pièces jointes

  • macro à travailler.xls
    96.5 KB · Affichages: 78

youky(BJ)

XLDnaute Barbatruc
Re : VBA utilisation de IF Then IF HELP!!!

Bienvenue dans la prise de tête VBA . . .
Essaie de mettre comme ceci. (non testé)
Code:
For i = 2 To totalrowsf1
For n = 2 To totalrowsf2
   
If Feuil1.Cells(i, 1).Value = Feuil2.Cells(n, 11).Value Then
 If Feuil1.Cells(i, 3).Value <> Feuil2.Cells(n, 16).Value Then
  Feuil1.Cells(i, 5).Value = "Attention Ecart montant"
 Else
  Feuil1.Cells(i, 5).Value = "rien à signaler"
 End If
End If
Next
Next
Bruno
 

Fred0o

XLDnaute Barbatruc
Re : VBA utilisation de IF Then IF HELP!!!

Bonjour lema,

J'ai repris ton code et modifié quelques lignes pour le simplifier. Ensuite, je me suis rendu compte qu'il ne fonctionnait pas car dans Feuil1 en colonne A tu as du texte et sur Feuil2 en colonne K, tu as des nombres. J'ai modifié une partie des textes en nombre dans la Feuil1 et le code fonctionne. Maintenant, si tu as toujours des nombres d'un coté et du texte de l'autre, il faudra légèrement modifier le code.

Tiens moi au courant.

A+

Edit : Salut Youki. Moi, j'ai testé le code !!!
 

Pièces jointes

  • lema_V1.xls
    92 KB · Affichages: 68

kjin

XLDnaute Barbatruc
Re : VBA utilisation de IF Then IF HELP!!!

Bonjour,
La touche F1 est d'une grande utilité, penses y...
Débutant ou non, un code se doit d'être structuré; on s'y retrouve mieux, on repère plus facilement les erreurs et oublis, et on le rend plus agréable à lire ce qui n'enlève rien
Code:
For i = 2 To totalrowsf1
    For n = 2 To totalrowsf2
        If (Feuil1.Cells(i, 1).Value = Feuil2.Cells(n, 11).Value) Then
            If (Feuil1.Cells(i, 3).Value <> Feuil2.Cells(n, 16).Value) Then
                Feuil1.Cells(i, 5).Value = "Attention Ecart montant"
            Else
                Feuil1.Cells(i, 5).Value = "rien à signaler"
            End If
        End If
    Next n
Next i
A+
kjin
 

lema

XLDnaute Nouveau
Re : VBA utilisation de IF Then IF HELP!!!

Bonjour Fred,

Merci pout le test et les modifications sur nombre vs texte
Avec la conversion du texte en nombre la macro marche.
Mon seul souci, c'est que la feuil 1 est un extrait d'un outil de gestion et que la colonne A sera toujours en texte.
Est ce qu'il faudrait modifier la colonne A avant de lancer la fonction IF? Le souci "je sais encore" c'est quand je passe par format cellule on me dit que mes cellules sont en standard et pas en Texte

Encore merci pour tes explication
Lema
 
Dernière édition:

Pierrot93

XLDnaute Barbatruc
Re : VBA utilisation de IF Then IF HELP!!!

Bonjour à tous,

pour convertir une colonne, essaye ceci, conversion de la colonne A, le séparateur décimale des données source étant la virgule :
Code:
Columns(1).TextToColumns Destination:=Range("A1"), DecimalSeparator:=","

bonne journée
@+
 

Fo_rum

XLDnaute Accro
Re : VBA utilisation de IF Then IF HELP!!!

Bonjour,

il semble que tes listes n'aient pas de doublon. Essaie, pour améliorer les performances :
Code:
Sub lastfundings()
    Dim Cels As Range, Est As Range
    'convertit les textes numériques en nombre
    With Sheets("Feuil1")
        .[A:A].Value = .[A:A].Value
        'recherche en colonne A de Feuil1 les nombres de colonne K de Feuil2
        For Each Cels In Sheets("Feuil2").Range("K2:K" & Sheets("Feuil2").Cells(Rows.Count, "K").End(xlUp).Row)
            Set Est = .[A:A].Find(Cels)
            'si trouvé, teste les montants
            If Not Est Is Nothing Then
                If .Cells(Est.Row, 3) <> Cels.Offset(, 5) Then .Cells(Est.Row, 5).Value = "Attention : écart"
            End If
        Next
    End With
End Sub
 

Pièces jointes

  • ComparaisonsVBA.xls
    38.5 KB · Affichages: 67

Discussions similaires

Statistiques des forums

Discussions
312 684
Messages
2 090 916
Membres
104 697
dernier inscrit
Pierrot Hubert