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 :

Copie de données dans la première ligne vide [XL-2013]


Sujet :

Macros et VBA Excel

  1. #1
    Membre régulier
    Homme Profil pro
    Étudiant
    Inscrit en
    Février 2013
    Messages
    113
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Conseil

    Informations forums :
    Inscription : Février 2013
    Messages : 113
    Points : 72
    Points
    72
    Par défaut Copie de données dans la première ligne vide
    Bonjour à Tous,

    J'ai une macro qui fonctionne bien. Le seul petit problème, est que les données d'une feuille que je veux copier dans une autre se copie toujours en A1:C1. Je voudrais qu'elles se copient dans la première ligne vide mais je n'arrive pas à adapter la ligne de code: Sheets("Vus").Range("A1:C1") = Selection.Value.

    Voici le code complet:
    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
    Sub TrouverVoisinNonVus()
        Dim Cellule As Range
        Dim Art As String
        Art = InputBox("Article à rechercher")
        With ActiveSheet.Range("A1:A" & [A65000].End(xlUp).Row)
            Set Cellule = .Find(Art, Lookat:=xlWhole)
            If Not Cellule Is Nothing Then
                firstAddress = Cellule.Address
                Do
                    Cellule.Offset(0, 0).Select
                    Selection.Resize(Selection.Rows.Count, _
                        Selection.Columns.Count + 3).Select
                    Selection.Copy
                    Sheets("Vus").Range("A1:C1") = Selection.Value
                    Selection.Delete Shift:=xlUp
                    Exit Sub
                    Set Cellule = .FindNext(Cellule)
                Loop While Not Cellule Is Nothing And Cellule.Address <> firstAddress
            End If
        End With
        MsgBox "Rien trouvé"
    End Sub
    Quelqu'un peut-il m'aider, Merci

  2. #2
    Membre du Club
    Homme Profil pro
    No
    Inscrit en
    Février 2018
    Messages
    42
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : No

    Informations forums :
    Inscription : Février 2018
    Messages : 42
    Points : 45
    Points
    45
    Par défaut
    Hello

    Ca devrait marcher

    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 TrouverVoisinNonVus()
        Dim Cellule As Range
        Dim Art As String
        Art = InputBox("Article ? rechercher")
        With ActiveSheet.Range("A1:A" & [A65000].End(xlUp).Row)
         ' cellule = contient l'article recherche
        Set Cellule = .Find(Art, Lookat:=xlWhole)
            If Not Cellule Is Nothing Then
                'firstAddress = 1ere ligne vierge dans feuille "Vus"
                firstaddress = Sheets("Vus").Range("A65000").End(xlUp).Row + 1
                'Copy  colonnes "A:D"  dans feuille vus (1ere ligne vierge"          
                Cellule.Resize(Cellule.Rows.Count, _
                Cellule.Columns.Count + 3).Copy Sheets("Vus").Cells(firstaddress, 1)
            Else
                'Si article non trouve
                MsgBox "Article non trouv?"
     
            End If
        End With
    End Sub

  3. #3
    Expert confirmé Avatar de jerome.vaussenat
    Homme Profil pro
    Formateur Bureautique
    Inscrit en
    Janvier 2011
    Messages
    1 629
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Formateur Bureautique
    Secteur : Enseignement

    Informations forums :
    Inscription : Janvier 2011
    Messages : 1 629
    Points : 4 299
    Points
    4 299
    Par défaut
    Salut boulser

    Voici une proposition de code.

    Pour ne pas trop modifier ton code, je suis passé par une fonction qui détermine la première ligne vide de la feuille "Vus".

    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
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    Sub TrouverVoisinNonVus()
        Dim Cellule As Range
        Dim Art As String
        Dim ligne_insert As Integer
        Art = InputBox("Article à rechercher")
        With ActiveSheet.Range("A1:A" & [A65000].End(xlUp).Row)
            Set Cellule = .Find(Art, Lookat:=xlWhole)
            If Not Cellule Is Nothing Then
                firstAddress = Cellule.Address
                Do
                    Cellule.Offset(0, 0).Select
                    Selection.Resize(Selection.Rows.Count, _
                        Selection.Columns.Count + 3).Select
                    Selection.Copy
     
                    'avec cette ligne on va déterminer la première ligne vide de la feuille "Vus
                    ligne_insert = trouve_vide()
                    With Sheets("Vus")
                        .Range(.Cells(ligne_insert, 1), .Cells(ligne_insert, 4)) = Selection.Value
                    End With
                    Selection.Delete Shift:=xlUp
                    Exit Sub
                    Set Cellule = .FindNext(Cellule)
                Loop While Not Cellule Is Nothing And Cellule.Address <> firstAddress
            End If
        End With
        MsgBox "Rien trouvé"
    End Sub
     
     
    Function trouve_vide()
        'cette fonction permet de parcourir le tableau "Vus" pour trouver la première ligne vide.
        'Pour savoir si une ligne est vide le code regarde la 4 premières colonnes
        Dim ligne As Integer
        Dim nb_données As Integer
     
        ligne = 1
     
        nb_données = 1
        Do Until nb_données = 0
            With Sheets("Vus")
                nb_données = Application.WorksheetFunction.CountA(.Range(.Cells(ligne, 1), .Cells(ligne, 4)))
            End With
            ligne = ligne + 1
        Loop
        trouve_vide = ligne - 1
        End Function
    En espérant que cela fasse ce que tu veux.

    Edit : mais je n'ai pas été le plus rapide ...
    Jérôme

    " Je pense donc je suis. Tu es donc j'apprends ". (GCM)

    Si ce message vous à aidé, merci de cliquer sur . Si ce message est résolu, cliquez sur .

  4. #4
    Membre régulier
    Homme Profil pro
    Étudiant
    Inscrit en
    Février 2013
    Messages
    113
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Conseil

    Informations forums :
    Inscription : Février 2013
    Messages : 113
    Points : 72
    Points
    72
    Par défaut
    Grand merci, avec la function, tout fonctionne à merveille

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [XL-2003] Copier des lignes dans une autre feuille à la première ligne vide
    Par PasDan dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 30/09/2010, 13h34
  2. [XL-2003] mettre les données dans la prochaine ligne vide
    Par Fredo10 dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 29/03/2010, 21h17
  3. Réponses: 8
    Dernier message: 15/10/2009, 12h13
  4. [XL-2007] Ajouter les donnée d'un userform dans la premiere ligne vide
    Par dodo28 dans le forum Macros et VBA Excel
    Réponses: 7
    Dernier message: 31/07/2009, 00h12

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