VBA Excel 2007

Résolu/Fermé
ella12_12 Messages postés 94 Date d'inscription samedi 20 octobre 2007 Statut Membre Dernière intervention 28 février 2016 - 28 mars 2011 à 19:01
ella12_12 Messages postés 94 Date d'inscription samedi 20 octobre 2007 Statut Membre Dernière intervention 28 février 2016 - 29 mars 2011 à 12:59
Bonjour à tous,

N'étant pas très douée en VBA, je voudrais savoir si il est possible :
1. de faire un couper/ coller des valeurs uniquement
2 de faire en sorte qu'un filtre soit appliqué automatiquement

Je m'explique :

J'ai un fichier contenant 2 feuilles:
Nom de la 1ère feuille = "Issue_List"
Nom de la 2ème feuille = "Issue_list_Closed"

Je voudrais (feuille "Issue_List") que quand dans la colonne "J" il y a "close" alors il coupe et colle ces données dans la feuille "Issue_list_Closed" (cela fonctionne avec la macro ci-dessous) mais uniquement les valeurs (ca ca ne fonctionne pas avec la mocro actuelle). En effet, dans la feuille 1 il y a des Formats conditionnels et j'ai appliqué dans certaines cellules des validations que je ne veux pas retrouver dans la feuille 2

Ensuite j'aimerai qu'il filtre ou qu'il cache automatiquement les lignes qui sont vides dans la feuille 1. (cela ne fonctionne pas dans la macro actuelle)

J'ai déjà une partie du code:

Sub Retire_Close()
Dim i As Integer 
Sheets("Issue_List").Select 
For i = 6 To Range("A1048576").End(xlUp).Row
    If Cells(i, 10) = "Close" Then
        Range(Cells(i, 1), Cells(i, 16)).Cut
        Sheets("Issue_List closed").Select
        Range("A1048576").End(xlUp).Offset(1).Activate
        ActiveSheet.Paste
        Sheets("Issue_List").Select
    End If
Next i


End Sub


J'espère que tout ceci est clair (sourire)

D'avance je vous remercie pour les bons soins que vous porterez à cette demande

Bien à vous
E

A voir également:

3 réponses

ella12_12 Messages postés 94 Date d'inscription samedi 20 octobre 2007 Statut Membre Dernière intervention 28 février 2016 31
28 mars 2011 à 21:19
a
0
michel_m Messages postés 16603 Date d'inscription lundi 12 septembre 2005 Statut Contributeur Dernière intervention 16 décembre 2023 3 303
Modifié par michel_m le 29/03/2011 à 09:25
Bonjour,

En VBA, évite les select-selection et les copy ou cut -paste très lents et "mangeurs de mémoire" :-)

proposition
Sub Retire_Close()   
Dim Nbre As Integer, Cptr As Integer   
Dim Lig1 As Integer, Lig2 As Integer   
Dim ligne  

'fige le défilement de l'écran   
Application.ScreenUpdating = False   

 With Sheets("Issue_List")   
    'compte le nombre de "close" dans colonne 10   
    Nbre = Application.CountIf(.Columns(10), "Close")   
    ' vérification de présence   
    If Nbre = 0 Then: GoTo vide   
       
        Lig1 = 5   
        'on ne boucle que sur les lignes avec "close"   
        For Cptr = 1 To Nbre   
            Lig1 = .Columns(10).Find("close", .Cells(Lig1, 10), xlValues).Row   
             With .Range(.Cells(Lig1, 1), .Cells(Lig1, 16))   
                'mémorise et nettoie la ligne avec "close"   
                ligne = .Value   
                .Clear   
            End With   
            With Sheets("Issue_List closed")   
                'restitue la ligne avec c"lose"   
                Lig2 = .Range("A1048576").End(xlUp).Offset(1).Row   
                .Range(.Cells(Lig2, 1), .Cells(Lig2, 16)) = ligne   
            End With   
    Next   
'cache les lignes contenant auparavant "close"   
 .Range("J6:J" & Lig1).SpecialCells(xlCellTypeBlanks).EntireRow.Hidden = True   
End With   

Exit Sub   
vide:   
MsgBox " aucune valeur ""close"", vbcritical"   
End Sub   


En espèrant que
Michel
0
ella12_12 Messages postés 94 Date d'inscription samedi 20 octobre 2007 Statut Membre Dernière intervention 28 février 2016 31
29 mars 2011 à 12:59
Bonjour Michel,

Un tout grand merci.
Cela fonctionne pas mal, mais il y a deux points de détails :

Feuille issue_list

1. Colonne "j" et "P" : lorsque je j'insère une nouvelle ligne, ces lignes n'ont plus la validation
2. Colonne "L" : lorsque j'insère une nouvelle ligne, il n'y a plus la formule

Feuille issue_list_closed
1. Colonne "j" et "P" : La validation reste
2. Les formats conditionnels restent aussi
J'aimerai ne plus les avoir dans la feuille issue liste

j'ai essayé en changeant une partie du code.

With .Range(.Cells(Lig1, 1), .Cells(Lig1, 16))
'mémorise et nettoie la ligne avec "close"
ligne = .Value
EntireRow.Hidden = True

'.Clear
End With
With Sheets("Issue_List closed")
'restitue la ligne avec c"lose"
Lig2 = .Range("A1048576").End(xlUp).Offset(1).Row
.Range(.Cells(Lig2, 1), .Cells(Lig2, 16)) = ligne
End With
Next
'cache les lignes contenant auparavant "close"
'.Range("J6:J" & Lig1).SpecialCells(xlCellTypeBlanks).EntireRow.Hidden = True
End With

Un tout grand merci d'avance

Bien à vous
E
0