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 :

Problème avec la méthode cut


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Inscrit en
    Janvier 2006
    Messages
    113
    Détails du profil
    Informations forums :
    Inscription : Janvier 2006
    Messages : 113
    Par défaut Problème avec la méthode cut
    Bonjour,

    J'ai crée le code suivant (avec l'aide de forum ) mais je ne parviens pas à l'afiner comme j'aimerais...
    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
    ' Sélectionne l'ensemble des données (utile pour qu'Excel ne "réfléchisse" pas sur les 65000 lignes)
    Sub exemple()
    Sheets("En attente").Select
    ActiveCell.SpecialCells(xlLastCell).Select
    Range(Selection, Cells(1)).Select
     
    For Each Rw In Selection.Rows
     
    Ligne = Sheets("Envoyées").Range("a65530").End(xlUp).Row + 1
     
    If Rw.Cells(1, 9).Value = "x" Then 'test la colonne I
    Rw.Cut Destination:=Worksheets("Envoyées").Cells(Ligne, 1).EntireRow
     
     
    End If
     
    Next Rw
     
    End Sub
    La recherche fonctionne mais c'est le cut qui me posse problème. Il serait peut être plus facile de choisir une autre méthode mais laquelle et comment... ?

    Il faudrait que ça copie dans ma feuille "envoyées" toutes les lignes de A à H (actuellement ça prend toutes la ligne y compris la I qui est la dernière de mon tableau) de la feuille "En attente" qui ont un x dans la colonne I. Ensuite il faudrait que toutes les ligne qui ont été copier soit effacées.

    Le top serai encore que ça me copie la formule qui se trouve dans la colonne I de ma feuille "envoyées" dans les nouvelles lignes...

    Si quelqu'un aurait une petite idée...

  2. #2
    Membre émérite
    Avatar de fred65200
    Profil pro
    Inscrit en
    Septembre 2007
    Messages
    901
    Détails du profil
    Informations personnelles :
    Âge : 58
    Localisation : France

    Informations forums :
    Inscription : Septembre 2007
    Messages : 901
    Par défaut
    bonjour,
    un petit code à tester


    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
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    Sub Essai()
    Dim DerLiEnAttente As Long
    Dim DerLiEnvoyees As Long
    Dim i As Long
    Dim F1 As Worksheet
    Dim F2 As Worksheet
    Set F1 = Sheets("En attente")
    Set F2 = Sheets("Envoyées")
     
    'recherche de la dernière ligne feuille En attente
    DerLiEnAttente = F1.Columns(1).Find("*", , , , , xlPrevious).Row
     
    'recherche de la dernière ligne feuille Envoyées
    On Error Resume Next
    DerLiEnvoyees = F2.Columns(1).Find("*", , , , , xlPrevious).Row + 1
    If Err.Number <> 0 Then Err.Clear: On Error GoTo 0: DerLiEnvoyees = 1
     
    'boucle
    For i = DerLiEnAttente To 1 Step -1
        'recherche du X
        If UCase(F1.Cells(i, "I").Value) = "X" Then
            'copie de la plage de cellule
            Range(F1.Cells(i, "A"), F1.Cells(i, "I")).Copy F2.Cells(DerLiEnvoyees, 1)
            'suppression de la ligne
            Rows(i).Delete Shift:=xlUp
            'incrementation
            DerLiEnvoyees = DerLiEnvoyees + 1
        End If
    'fin de boucle
    Next
     
    End Sub
    Je n'ai pas trop compris ta demande d'incrémentation de formule,

    enregistre avec l'éditeur de macro, tu devrais t'en sortir.

    Cordialement

  3. #3
    Membre confirmé
    Inscrit en
    Janvier 2006
    Messages
    113
    Détails du profil
    Informations forums :
    Inscription : Janvier 2006
    Messages : 113
    Par défaut
    Super ! Ca fonctionne. Le seul "truc" qu'il y aurait encore à améliorer, c'est que si il y a un x dans la cellule I10 par exemple ça devrait coller dans ma deuxième feuille uniquement A10 à h10... Est-ce jouable ?

  4. #4
    Membre émérite
    Avatar de fred65200
    Profil pro
    Inscrit en
    Septembre 2007
    Messages
    901
    Détails du profil
    Informations personnelles :
    Âge : 58
    Localisation : France

    Informations forums :
    Inscription : Septembre 2007
    Messages : 901
    Par défaut
    re

    oui, il te faut remplacer la ligne
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
            Range(F1.Cells(i, "A"), F1.Cells(i, "I")).Copy F2.Cells(DerLiEnvoyees, 1)
    par
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
            Range(F1.Cells(i, "A"), F1.Cells(i, "H")).Copy F2.Cells(DerLiEnvoyees, 1)
    Cordialement

  5. #5
    Membre confirmé
    Inscrit en
    Janvier 2006
    Messages
    113
    Détails du profil
    Informations forums :
    Inscription : Janvier 2006
    Messages : 113
    Par défaut
    Ah oui

    Ensuite j'ai ajouter ce code (qui ne fonctionne pas) après que j'ai collé mes données dans la feuille "Envoyées"
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
            Sheets("Envoyées").Range("I2").AutoFill Destination:=Sheets("Envoyées").Range(DerLiEnvoyees, "i")
    La macro passe tout outre sans message d'erreur mais sans tirer ma formule jusqu'à la dernière ligne...

    Si vous pouvez encore m'aider pour ça ce serait super !

  6. #6
    Membre émérite
    Avatar de fred65200
    Profil pro
    Inscrit en
    Septembre 2007
    Messages
    901
    Détails du profil
    Informations personnelles :
    Âge : 58
    Localisation : France

    Informations forums :
    Inscription : Septembre 2007
    Messages : 901
    Par défaut
    bonjour,
    essaie d'ajouter cette ligne de code avant end sub

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
        F2.Range("I2").AutoFill F2.Range("I2:I" & DerLiEnvoyees - 1)
    cordialement

Discussions similaires

  1. [Runtime] Problème avec la méthode 'exec'
    Par regisba dans le forum API standards et tierces
    Réponses: 1
    Dernier message: 25/08/2006, 13h36
  2. Problème avec la méthode request.form()
    Par sam.fet dans le forum ASP
    Réponses: 2
    Dernier message: 11/08/2006, 17h11
  3. [POO] Problème avec setInterval/méthodes d'écriture
    Par Lpu8er dans le forum Général JavaScript
    Réponses: 3
    Dernier message: 18/07/2006, 15h37
  4. problème avec la méthode getElementById() dans Firefox
    Par matrouba dans le forum Général JavaScript
    Réponses: 5
    Dernier message: 19/12/2005, 08h55
  5. Problème avec la méthode pack()
    Par tomca dans le forum Langage
    Réponses: 5
    Dernier message: 15/09/2005, 10h58

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