IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Macros et VBA Excel Discussion :

Excel VBA couper/collerValeur


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre habitué
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    10
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Juillet 2006
    Messages : 10
    Par défaut Excel VBA couper/collerValeur
    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: (voir fichier joint)
    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" (le couper/coller fonctionne avec la macro ci-dessous) mais pas 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

    Serait il possible 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)
    Par exemple en mettant le filtre sur la colonne A et en n'affichant pas les blanc. Dans la colonne A c'est en fait une série incrémentée. Si je supprime les lignes celle-ci ne s'incrémentent plus correctement et la numérotation change et ca il faut absolument l'éviter.


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

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    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
    Fichiers attachés Fichiers attachés

  2. #2
    Expert éminent Avatar de mercatog
    Homme Profil pro
    Inscrit en
    Juillet 2008
    Messages
    9 435
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Autre

    Informations forums :
    Inscription : Juillet 2008
    Messages : 9 435
    Par défaut
    Une proposition
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    Sub Retire_Close()
    Dim Sh As Worksheet
    Dim i As Long, LastLig As Long, NewLig As Long
     
    Application.ScreenUpdating = False
    Set Sh = Sheets("Issue_List closed")
    NewLig = Sh.Cells(Sh.Rows.Count, 1).End(xlUp).Row + 1
     
    With Sheets("Issue_List")
        LastLig = .Cells(.Rows.Count, 1).End(xlUp).Row
        For i = LastLig To 6 Step -1
            If .Cells(i, 10) = "Close" Then
                Sh.Rows(NewLig).Insert
                Sh.Range(Sh.Cells(NewLig, 1), Sh.Cells(NewLig, 16)).Value = .Range(.Cells(i, 1), .Cells(i, 16)).Value
                .Rows(i).Delete
            End If
        Next i
    End With
    Set Sh = Nothing
    End Sub

  3. #3
    Membre habitué
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    10
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Juillet 2006
    Messages : 10
    Par défaut
    @ mercatog
    Bonjour et surtout un tout grand merci.

    Le problème c'est que si on supprime les lignes vides la numérotation ne se fait plus correctement.
    Vous pouvez voir après avoir tourné la macro on à 2 lignes qui s'appellent 9 et deux lignes qui s'appellent 10.
    De plus lorsque j'insére des donnée dans ligne suivante celle-ci prend le numéro 10. C'est pour cela que j'imaginais plutot un filtre automatisé par une macro et qui n'afficherai pas les blanc

    Un tout grand merci

    E

    @ carden752
    Bonsoir,

    Si j'ajoute ce code en ligne 17
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ActiveSheet.PasteSpecial XlPasteType:=xlPasteValues
    Cela ne fonctionne pas.

    Et il ne faut surtout pas supprimer les lignes car alors la numérotation dans la colonne A ne fonctionne plus.

    Un tout grand merci pour votre attention

    Bien à vous
    E

  4. #4
    Expert éminent Avatar de mercatog
    Homme Profil pro
    Inscrit en
    Juillet 2008
    Messages
    9 435
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Autre

    Informations forums :
    Inscription : Juillet 2008
    Messages : 9 435
    Par défaut
    Pour mettre une numérotation automatique, mets ce code dans le module de la feuille "Issue_List" (évènement Change)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    Private Sub Worksheet_Change(ByVal Target As Range)
    Dim N As Long
     
    N = Application.Max(Range("A:A"), Sheets("Issue_List Closed").Range("A:A"))
    If Target.Column = 2 And Target.Row > 5 Then
        If Target.Offset(0, -1).Value = "" Then
            Application.EnableEvents = False
            Target.Offset(0, -1).Value = N + 1
            Application.EnableEvents = True
        End If
    End If
    End Sub
    Le code précédent pourra aussi s'écrire
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    Sub Retire_Close()
    Dim Sh As Worksheet
    Dim i As Long, LastLig As Long, NewLig As Long
     
    Application.ScreenUpdating = False
    Set Sh = Sheets("Issue_List closed")
    NewLig = Sh.Cells(Sh.Rows.Count, 1).End(xlUp).Row + 1
     
    With Sheets("Issue_List")
        LastLig = .Cells(.Rows.Count, 1).End(xlUp).Row
        For i = LastLig To 6 Step -1
            If .Cells(i, 10) = "Close" Then
                Sh.Range(Sh.Cells(NewLig, 1), Sh.Cells(NewLig, 16)).Value = .Range(.Cells(i, 1), .Cells(i, 16)).Value
                .Rows(i).Delete
                NewLig = NewLig + 1
            End If
        Next i
    End With
    Set Sh = Nothing
    End Sub

  5. #5
    Membre Expert

    Homme Profil pro
    Spécialiste progiciel
    Inscrit en
    Février 2010
    Messages
    1 747
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Haute Loire (Auvergne)

    Informations professionnelles :
    Activité : Spécialiste progiciel
    Secteur : Service public

    Informations forums :
    Inscription : Février 2010
    Messages : 1 747
    Par défaut
    Bonjour,

    pourquoi ne pas utiliser un collage spécial?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    PasteSpecial XlPasteType:= xlPasteValues
    Pour supprimer les lignes vides, quelque chose du genre
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    For Each rw In Worksheets(1).Cells(1, 1)
        this = rw.Cells(1, 1).Value
        If this is Nothing Then rw.Delete
    Next

Discussions similaires

  1. [Excel VBA] Boucler sur un userform
    Par tpv72 dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 21/09/2005, 01h57
  2. [Excel][VBA][Java] Appeler un objet java
    Par ay_pepito dans le forum Macros et VBA Excel
    Réponses: 5
    Dernier message: 29/07/2005, 15h46
  3. [excel vba]case à cocher dans excel pour plusieurs lignes
    Par fcoisb dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 02/03/2005, 11h23
  4. EXcel VBA analyse de sharpe
    Par vanima dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 22/02/2005, 13h07
  5. [Excel - VBA] Problème de suppression de lignes...
    Par beholder2 dans le forum Macros et VBA Excel
    Réponses: 8
    Dernier message: 28/01/2005, 17h27

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo