VBA Excel 2007
Résolu
ella12_12
Messages postés
94
Date d'inscription
Statut
Membre
Dernière intervention
-
ella12_12 Messages postés 94 Date d'inscription Statut Membre Dernière intervention -
ella12_12 Messages postés 94 Date d'inscription Statut Membre Dernière intervention -
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:
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
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:
- VBA Excel 2007
- Save as pdf office 2007 - Télécharger - Bureautique
- Liste déroulante excel - Guide
- Word et excel gratuit - Guide
- Déplacer colonne excel - Guide
- Si ou excel - Guide
3 réponses
Bonjour,
En VBA, évite les select-selection et les copy ou cut -paste très lents et "mangeurs de mémoire" :-)
proposition
En espèrant que
Michel
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
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
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