etoumat
Messages postés54Date d'inscriptionvendredi 2 février 2007StatutMembreDernière intervention 5 juillet 2007
-
8 mars 2007 à 15:23
etoumat
Messages postés54Date d'inscriptionvendredi 2 février 2007StatutMembreDernière intervention 5 juillet 2007
-
9 mars 2007 à 09:01
Bonjour.
Existe il un code sous vba pour excel pour copier uniquement les lignes afficher et pas les lignes masqués?
drikce06
Messages postés2236Date d'inscriptionlundi 29 mai 2006StatutMembreDernière intervention29 mai 200810 8 mars 2007 à 16:13
Do Until Sheets("72").Cells(a, 1) = ""
Sheets("72").Select
If ActiveSheet.Rows(a).Hidden = False Then
If Cells(a, 8) = Cells(1, 8) Then
Range("A" & a, "J" & a).Select
Selection.Copy
Sheets("Ent. Sup.").Select
Cells(b, 1).Select
ActiveSheet.Paste
Sheets("72").Select
Range("A" & a, "J" & a).Select
Selection.Delete shift:=xlUp
a = a - 1
b = b + 1
Else
Sheets("72").Cells(1, 2) = b
Exit Function
End If
End If
a = a + 1
Loop
Drikce 06
Si la réponse vous convient: Réponse acceptée. Si la réponse vous convient pas:
etoumat
Messages postés54Date d'inscriptionvendredi 2 février 2007StatutMembreDernière intervention 5 juillet 2007 8 mars 2007 à 16:34
Merci beaucoup de te pencher sur mon problème Drikce06 mais j'ai déja essayé sa. C'est vrai que sa marche je vai d'ailleur accepté ta réponse mais c trop lent quand ta plein de ligne ( j'en ai 16000 et c interminable)
Merci quand meme et dsl de t'avoir pris la tête avant. Bon fin de journée tchao
etoumat
Messages postés54Date d'inscriptionvendredi 2 février 2007StatutMembreDernière intervention 5 juillet 2007 8 mars 2007 à 16:37
en fait ce qui aurait été bien c'est un code qui reconnai directement les ligne masqués sans passer par un " if " car c'est trop long. PS : au lieu de rajouter : " If ActiveSheet.Rows(a).Hidden = False Then " il suffit d'enlever : " Else Sheets("72").Cells(1, 2) = b Exit Function". Sa revien meme
etoumat
Messages postés54Date d'inscriptionvendredi 2 février 2007StatutMembreDernière intervention 5 juillet 2007 9 mars 2007 à 08:21
Serait-il possible de faire un code de la forme :
"For each Rows.Hidden = False in activesheet"
afinque vba prenne directement les lignes non masquées ? J'ai essayer de cette facon et sa ne marche pas car il faut normalement une variable de type variant entre each et in. Du coup je ne sait pas comment faire. Est - ce possible ?
drikce06
Messages postés2236Date d'inscriptionlundi 29 mai 2006StatutMembreDernière intervention29 mai 200810 9 mars 2007 à 08:45
Mais de toute façon même si tu y parvient il te fera les quelques 65000 lignes visibles, donc le traitement sera encore plus long. La seule façon de le raccourcir serai de désactiver la mise à jour de l'écran et de traiter les 16000 lignes.
Drikce 06
Si la réponse vous convient: Réponse acceptée. Si la réponse vous convient pas:
Cette propriété renvoie un objet [mk:@MSITStore:C:\Program%20Files\Microsoft%20Office\OFFICE11\1036\VBAXL10.CHM::/html/xlobjRange1.htm Range] qui représente la plage de cellules affichées dans la fenêtre ou le volet. Si une colonne ou une ligne est partiellement affichée, elle est incluse dans la plage. En lecture seule.
Exemple
Cet exemple montre comment afficher le nombre de cellules visibles sur la feuille Sheet1.
Worksheets("Sheet1").Activate
MsgBox "There are " & Windows(1).VisibleRange.Cells.Count _
& " cells visible"
Drikce 06
Si la réponse vous convient: Réponse acceptée. Si la réponse vous convient pas:
etoumat
Messages postés54Date d'inscriptionvendredi 2 février 2007StatutMembreDernière intervention 5 juillet 2007 9 mars 2007 à 09:01
Ca yai j'ai trouver !!!!!! J'ai complètement changer de facon o lieu de faire une boucle je fait une recherche. Voila le code : ( Sa marche super et en plus c rapide)
Dim a, b, c, d As Integer
Dim aa As String
a = Sheets("72").Cells(1, 1)
b = Sheets("72").Cells(1, 2)
aa = Sheets("72").Cells(1, 8)
c = 1
d = 8
On Error GoTo erreur1
Do Until Sheets("72").Cells(a, 1) = ""
If Not g = 1 Then
Sheets("72").Select
Cells(c, d).Activate
Cells.Find(what:=aa, after:=ActiveCell, LookIn:=xlValues, lookat:= _
xlPart, searchorder:=xlByColumns, searchdirection:=xlDown).Activate
c = ActiveCell.Row
d = ActiveCell.Column
Range("A" & c, "J" & c).Select
Selection.Cut
Sheets("Ent. Sup.").Select
Cells(b, 1).Select
ActiveSheet.Paste
'Sheets("72").Select
'Range("A" & c, "J" & c).Select
'Selection.Delete shift:=xlUp
b = b + 1
Sheets("72").Cells(1, 2) = b
If c = 1 Then
g = 1
End If
Else
Exit Function
End If
Loop
Sheets("72").Select
Cells(1, 8).Select
erreur1:
Exit Function