Rechercher, copier une cellule sous excel (Macro)

mitsai34 Messages postés 5 Date d'inscription mercredi 28 juillet 2004 Statut Membre Dernière intervention 3 août 2004 - 2 août 2004 à 11:36
mitsai34 Messages postés 5 Date d'inscription mercredi 28 juillet 2004 Statut Membre Dernière intervention 3 août 2004 - 3 août 2004 à 13:48
Voilà mon pb:

Je recherche un script pour excel (petit newbie du vb)...

Je compare deux colonnes pour savoir si les valeurs contenues dans la colonne A sont présentes dans la colonne B et écrit le résultat de la comparaison dans la colonne C sachant que le nombre de valeur dans la colonne A est différent de la colonne B)

Ensuite je dois récupérer le résultat de la comparaison de la colonne C (vrai, faux, 0,1 peu importe...) ainsi que la valeur associée de la colonne A dans une autre colonne ou une autre feuille.

Merci pour votre aide

7 réponses

DocteurVB Messages postés 211 Date d'inscription lundi 19 août 2002 Statut Membre Dernière intervention 20 mai 2005
2 août 2004 à 12:36
pour ce qui est de la comparaison :

sub compare()

dim nbValA , nbValB as integer
dim Rech as boolean

Rech = true

for i=1 to nbValA
Rech = fctRech(range("A"+cstr(i)).value,"B") and Rech
Next

range("C1").value = cInt(Rech)

end sub

function fctRech(Val as Long,Col as string) as Boolean

dim i as integer

while i < nbValB and Val <> Range(Col+cstr(i))
i=i+1
wend

if Val = Range(Col+cstr(i))
fctRech = true
else
fctRech = false
end if

end function

voila pour ce qui est de la comparaison pour ce qui est de l'histoire de la valeur associé j'ai asp tout compris...

DocteurVB
0
mitsai34 Messages postés 5 Date d'inscription mercredi 28 juillet 2004 Statut Membre Dernière intervention 3 août 2004
2 août 2004 à 16:51
Moi j'utilise ce genre de script :

Sub Compare()

    Dim cell As Range
    
    For Each cell In Worksheets("Compare").Range("B2:B65536")
    If Not IsEmpty(cell) Then
    If Application.CountIf(Worksheets("Compare").Range("D2:B65536"), cell) > 0 Then
    cell.Offset(0, 1).FormulaR1C1 = "OK"
    Else: cell.Offset(0, 1).FormulaR1C1 = "Mismatch"
    cell.Offset(0, 1).Interior.ColorIndex = 8
    End If
    End If
    Next cell
End Sub



En fait, la colonne A contient des heures précises (photos prisent à intervalles réguliers) et la colonne B contient des heures aussi mais avec une seconde par ligne et ce de 7h à 17h. De plus cette colonne B est associé à une colonne C contenant des valeurs de 0 à 5. Je dois donc déterminer sur quelles plages horaires se trouvent les valeurs de la colonne C.

Merci d'avance et encore merci pour ta réponse rapide de cette après-midi.

A++ :-))
0
DocteurVB Messages postés 211 Date d'inscription lundi 19 août 2002 Statut Membre Dernière intervention 20 mai 2005
2 août 2004 à 17:16
poua pour la recherche j'admais que ta méthode est plus rapide mais je n'ai pas bcp l'habitude en VBA Excel...

mais je n'ai tjs pas compris ton pb entre la colonne C et B

que sont les tranches horaires, à koi correspondent les valeurs de la colonnes C...?

DocteurVB
0
mitsai34 Messages postés 5 Date d'inscription mercredi 28 juillet 2004 Statut Membre Dernière intervention 3 août 2004
3 août 2004 à 07:55
Je t'explique en détails:

Dans le script que je t'ai fait passer hier la colonne B et D contiennent les données à comparer, respectivement : la colonne B contient les horaires précis de photos (14:45:03, 15:15:02, etc) et dans la colonne D un enregistrement continu (toutes les secondes) de 7h à 17h.

Dans la colonne C (de même longueur que la D) des valeur comprise entre 0 et 5 ceci correspondant à des numéros de véhicule. Lorsque un véhicule passe devant une borne, il déclenche une prise de vue (son numéro de badge étant stocké ainsi que l'intervalle de mesure de 10s) à une heure précise stocké dans la colonne B mais les mesures ne s'arrête jamais de la journée pour la colonne D.

Et c'est là que ça coince...pour le tri de tout ça!

Si tu m'envoie ton mail (le mien: mitsai@wanadoo.fr) je t'enverrai une ou deux capture d'écran.

Merci pour ton aide Doc ;-)
0

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

Posez votre question
DocteurVB Messages postés 211 Date d'inscription lundi 19 août 2002 Statut Membre Dernière intervention 20 mai 2005
3 août 2004 à 13:17
donc en fait tu veux relever le numéro de chaque voiture qui est photographier ainsi que la tranche horaire dans laquelle elle a été flasher...

si c'est ça, moi je ferais une boucle qui scrute la colonne C
un truc du genre :

(bon faut l'adapter à la sauce VBA Excel)
j=0

for i= 1 to maxC

   if(range("C"+cstr(i))).value<>"" then

      j=j+1
      range("E"+cstr(j)).value = range("B"+cstr(j)).value +" "+range("C"+cstr(i)).value

   end if

Next



DocteurVB

****************************************************
N'oublie jamais que même le grand chaîne a lui aussi, un jour, été un gland...
****************************************************
0
DocteurVB Messages postés 211 Date d'inscription lundi 19 août 2002 Statut Membre Dernière intervention 20 mai 2005
3 août 2004 à 13:19
pis ben comme ça tu récupère le numéro et l'heure de flash correspondant et tu peux faire le traitement de la tranche horaire

voila, sinon mon mail c'est freakazoid@orange.fr

DocteurVB

****************************************************
N'oublie jamais que même le grand chaîne a lui aussi, un jour, été un gland...
****************************************************
0
mitsai34 Messages postés 5 Date d'inscription mercredi 28 juillet 2004 Statut Membre Dernière intervention 3 août 2004
3 août 2004 à 13:48
Merci avec tes infos j'ai réussi mon code mille merci et à la prochaine Doc...;-))
Le voila :

Sub chemin()
    
    Dim NomFichier As Variant
    Dim NomFichier2 As Variant
    Dim specdossier As String
    Dim Nom As Variant
    
    specdossier = "E:\Mes documents\Didier Delpuech\Sauvegarde_mesures_primaire\Images_Fragscan\(1)2004.07.12"
    Call AfficheListeFichier(specdossier)
    
End Sub

Sub AfficheListeFichier(specdossier)

    Dim fs, f, f1, fc, s
    Set fs = CreateObject("Scripting.FileSystemObject")
    Set f = fs.GetFolder(specdossier)
    Set fc = f.Files
    i = 0
    For Each f1 In fc
        s = s & f1.Name
        s = s & vbCrLf
       'Nom = Left(f1.Name, Len(f1.Name) - 4) nom de fichier originel
        'converti en hh:mm:ss
        Nom = Mid(f1.Name, 1, 2) + ":"
        Nom2 = Mid(f1.Name, 4, 2) + ":"
        Nom3 = Mid(f1.Name, 8, 2)
        i = i + 1
        Range("A" & i).FormulaR1C1 = Nom & Nom2 & Nom3
    Next
    MsgBox s
End Sub

0
Rejoignez-nous