VB sous excel

Signaler
Messages postés
1
Date d'inscription
mardi 8 juillet 2008
Statut
Membre
Dernière intervention
19 août 2008
-
Messages postés
372
Date d'inscription
vendredi 27 juillet 2007
Statut
Membre
Dernière intervention
22 juillet 2013
-
Bonjour,

je suis entrain de monter une application vb sous excel qui
permet de comparer plusieurs bases de données avec une base de donnée et là pour
comparer la base de donnée berrechid j'ai utilisé ce programme, à chaque fois
qu'il y a un vide je veux recuperer tte la ligne de la base de donnée mais le
programme ne marche pas, SVP je veux savoir pourquoi le programme ci dessus ne
marche pas ???
<col style=\"width: 60pt;\" width=\"80\" /><col />
' programme de comparaison pour B3
For i = 5 To 500

If
Feuil74.Cells(i, 1) = Feuil74.Cells(i, 7) Then
Feuil74.Cells(i, 13) = "VRAI"

Else
Feuil74.Cells(i, 13) = "FAUX"

If Feuil74.Cells(i, 7) = ""
Then

j = 5

GoTo label

Else

If
Feuil74.Cells(i, 1) = "" Then

j = 5

GoTo label2

End
If

End If
End If
Next i

label: For m = 7 To 500

Feuil74.Cells(j, 32) = Feuil13.Cells(m, 1)
Feuil74.Cells(j, 33) =
Feuil13.Cells(m, 2)
Feuil74.Cells(j, 34) = Feuil13.Cells(m, 3)

Feuil74.Cells(j, 35) = Feuil13.Cells(m, 4)
Feuil74.Cells(j, 36) =
Feuil13.Cells(m, 5)
Feuil74.Cells(j, 37) = Feuil13.Cells(m, 6)

Feuil74.Cells(j, 38) = Feuil13.Cells(m, 7)
Feuil74.Cells(j, 39) =
Feuil13.Cells(m, 8)
Feuil74.Cells(j, 40) = Feuil13.Cells(m, 9)

Feuil74.Cells(j, 41) = Feuil13.Cells(m, 10)
Feuil74.Cells(j, 42) =
Feuil13.Cells(m, 11)
Feuil74.Cells(j, 43) = Feuil13.Cells(m, 12)

Feuil74.Cells(j, 44) = Feuil13.Cells(m, 13)
Feuil74.Cells(j, 45) =
Feuil13.Cells(m, 14)
Feuil74.Cells(j, 46) = Feuil13.Cells(m, 15)

Feuil74.Cells(j, 47) = Feuil13.Cells(m, 16)
Feuil74.Cells(j, 48) =
Feuil13.Cells(m, 17)
j = j + 1

Next m

label2: For k = 3
To 28133

If Feuil4.Cells(k, 1) = "BERCHID1" Then

Feuil74.Cells(j, 19) = Feuil4.Cells(k, 1)
Feuil74.Cells(j, 20) =
Feuil4.Cells(k, 2)
Feuil74.Cells(j, 21) = Feuil4.Cells(k, 3)

Feuil74.Cells(j, 22) = Feuil4.Cells(k, 4)
j = j + 1

End If

Next k

MERCI
<col style=\"width: 60pt;\" width=\"80\" /><col />
<col style=\"width: 60pt;\" width=\"80\" /><col />

2 réponses

Messages postés
1835
Date d'inscription
vendredi 13 mai 2005
Statut
Membre
Dernière intervention
20 novembre 2013
9
Salut,

pour commencer tu n'es pas dans le bon theme ! Pour excel et plus globalement le VBA c'est ici : [infomsg.aspx Thèmes] / [infomsgf_VISUAL-BASIC_1.aspx Visual Basic 6] / [infomsgt_LANGAGES-DERIVES_287.aspx Langages dérivés] / [infomsgt_VBA_244.aspx VBA] /

c'est quoi que tu appels base de donnée ? des feuilles excel ?
c'est quoi Feuil74, Feuil13 ou Feuil4 des noms de feuille ? des variables ?
une cellule ou un groupe de cellules sont des objets avec une foulletitude de proprietes donc quand on compare des valeurs de cellules ou on attribut une valeurs a une cellule
on le specifi avec la proprieté : Value pour qu'excel ne ce mellange pas les pinceaux
Et l'aide de VBA tu en as entendu parler ? je te rappel que c'est livré avec !

comme je suis certain que feuil74 et les autre sont des noms de feuille, voici une correction

For i = 5 To 500
    If Sheets("feuil74").Cells(i, 1).Value = Sheets("feuil74").Cells(i, 7).Value Then
        Sheets("feuil74").Cells(i, 13).Value = "VRAI"
    Else
        Sheets("feuil74").Cells(i, 13).Value = "FAUX"
        If Sheets("feuil74").Cells(i, 7).Value = "" Then
            j = 5
            GoTo label
        Else
            If Sheets("feuil74").Cells(i, 1).Value = "" Then
                j = 5
                GoTo label2
            End If
        End If
    End If
Next i

label:

For m = 7 To 500
    Sheets("feuil74").Range(Sheets("feuil74").Cells(j, 32),Sheets("feuil74").Cells(j, 48)).Value = Sheets("feuil13").Range(Sheets("feuil13").Cells(m, 1),Sheets("feuil13").Cells(m, 17) ).Value
    j = j + 1
Next m

label2:
For k = 3 To 28133
    If Sheets("feuil4").Cells(k, 1).Value = "BERCHID1" Then
        Sheets("feuil74").Range(Sheets("feuil74").Cells(j, 19),Sheets("feuil74").Cells(j, 22)).Value =
Sheets("feuil4").Range(Sheets("feuil4").Cells(k, 1),Sheets("feuil4").Cells(k, 4).Value
        j = j + 1
    End If
Next k

et en version simplifier :

With Sheets("feuil74")
    For i = 5 To 500
        If .Cells(i, 1).Value = .Cells(i, 7).Value Then
            .Cells(i, 13).Value = "VRAI"
        Else
            .Cells(i, 13).Value = "FAUX"
            If .Cells(i, 7).Value = "" Then
                j = 5
                GoTo label
            Else
                If .Cells(i, 1).Value = "" Then
                    j = 5
                    GoTo label2
                End If
            End If
        End If
    Next i

    label:

    For m = 7 To 500
    .    Range(.Cells(j,
32),.Cells(j, 48)).Value =
Sheets("feuil13").Range(Sheets("feuil13").Cells(m,
1),Sheets("feuil13").Cells(m, 17) ).Value
        j = j + 1
    Next m

    label2:
    For k = 3 To 28133
        If Sheets("feuil4").Cells(k, 1).Value = "BERCHID1" Then

            .Range(.Cells(j, 19),.Cells(j, 22)).Value =
Sheets("feuil4").Range(Sheets("feuil4").Cells(k, 1),Sheets("feuil4").Cells(k, 4).Value
            j = j + 1
        End If
    Next k
End with

et il y a surement moyen de simplifier encore mais j'en ai marre

Surtout ne revient pas en disant ça marche pas ! car je ne te repondrais pas. Si cela ne marche pas explique ce qui ne vas pas : message d'erreur etc

A+
Messages postés
372
Date d'inscription
vendredi 27 juillet 2007
Statut
Membre
Dernière intervention
22 juillet 2013
1
Salut à tous
Bigfish_le vrai , t'a raison mais tu es un peu dur.
Je pense qu'on peut peut être simplifié par cette instruction
si la comparaison se font sur tes tables Excels identiques.
--------------------------------------------------------------------
For Each c In Range("a1:z500")
next
---------------------------------------------------------------------
Bonsoir