Dioul2
Messages postés8Date d'inscriptionmardi 21 octobre 2008StatutMembreDernière intervention 2 avril 2009
-
21 oct. 2008 à 15:09
Dioul2
Messages postés8Date d'inscriptionmardi 21 octobre 2008StatutMembreDernière intervention 2 avril 2009
-
21 oct. 2008 à 17:19
Bonjour à tous!
Je suis débutant en VBA et j'ai essayé de faire un code en me débrouillant comme je pouvais...
Mon code marche (ca c'est la bonne nouvelle!),mais je trouve qu'il est très lent à s'exécuter, alors je le soumets aux experts de ce site qui me montreront, j'en suis sûr, comment le simplifier!
Je vous remercie d'avance et longue vie à ce forum!
Code:
Sub recherche()
Dim rngTrouve As Range
Dim A As Range
Dim B As Range
Dim C As Range
Dim D As Range
Dim E As Range
Dim F As Range
Dim G As Range
Dim H As Range
Dim Y As Range
Dim Z As Range
Dim strChaine As String
Dim cell As String
strChaine = InputBox("Nom à rechercher :")
Set rngTrouve = Worksheets("client").Columns(2).Cells.Find(what:=strChaine)
If rngTrouve Is Nothing Then
MsgBox "N'existe pas encore"
Else
cell = rngTrouve.Address
End If
Set Y = Sheets("client").Range("A" & rngTrouve.Row)
Set Z = Sheets("client").Range("P" & rngTrouve.Row)
Set A = Sheets("client").Range("Q" & rngTrouve.Row)
Set B = Sheets("client").Range("S" & rngTrouve.Row)
Set C = Sheets("client").Range("T" & rngTrouve.Row)
Set D = Sheets("client").Range("V" & rngTrouve.Row)
Set E = Sheets("client").Range("W" & rngTrouve.Row)
Set F = Sheets("client").Range("Y" & rngTrouve.Row)
Set G = Sheets("client").Range("Z" & rngTrouve.Row)
Set H = Sheets("client").Range("AB" & rngTrouve.Row)
bigfish_le vrai
Messages postés1835Date d'inscriptionvendredi 13 mai 2005StatutMembreDernière intervention20 novembre 201313 21 oct. 2008 à 16:36
Salut,
en effet les copy paste peuvent ralentir mais dans le cas present je pense plutot que cela vient de la façon dont tu utilises le find.
J'ai modifié un peu la methode du find et simplifié un peu le code. ATTENTION tout les points sont OBLIGATOIR !!! Ici ils servent à faire le lien entre la feuille et les cellules via la commande With
Sub recherche()
Dim rngTrouve As Range
Dim A As Range
Dim B As Range
Dim C As Range
Dim strChaine As String
Dim ligne As Long
Application.ScreenUpdating = False
strChaine = InputBox("Nom à rechercher :")
With Sheets("client")
Set rngTrouve = .Columns(2).Find(strChaine, , , , xlByColumns, xlPrevious, False)
If rngTrouve Is Nothing Then
Application.ScreenUpdating = True
MsgBox "N'existe pas encore"
Exit Sub
Else
ligne = rngTrouve.Row
End If
Set A = .Range("A" & ligne & ":P" & ligne)
Set B = Union(.Range("Q" & ligne), .Range("T" & ligne), .Range("W" & ligne), .Range("Z" & ligne))
Set C = Union(.Range("S" & ligne), .Range("V" & ligne), .Range("Y" & ligne), .Range("AB" & ligne))
End With
With Sheets("Index")
A.Copy
.Range("C6").PasteSpecial Paste:=xlPasteValues, Transpose:=True
PCPT
Messages postés13280Date d'inscriptionlundi 13 décembre 2004StatutMembreDernière intervention 3 février 201847 21 oct. 2008 à 16:18
re,
(je ne fais pas de VBA)
me semble que "copy paste" ont un effet visuel, ce qui ralenti le traitement
si c'est bien le cas, il y a une autre méthode mais je ne m'en souviens plus, voir dans l'aide (F1)
en attendant qu'un VBAiste t'oriente mieux que moi, tu peux en tout cas désactiver la sélection visuelle
çà doit être
screen.updating = false
ou
application.screenupdate = false
à remettre à true en fin de macro
++
<hr size="2" width="100%" />
Prenez un instant pour répondre à [sujet-SONDAGE-POP3-POUR-CS_769706.aspx ce sondage] svp
Vous n’avez pas trouvé la réponse que vous recherchez ?