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 :

Réaliser une recherche dans une colonne et copier coller les lignes


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Février 2013
    Messages
    24
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2013
    Messages : 24
    Par défaut Réaliser une recherche dans une colonne et copier coller les lignes
    Bonjour,

    Je continue à développer mon application, et je me retrouve bloquer.
    J'ai une feuille "SituationMateriel" ou apparait la liste des Entrée/Sortie du matériel. Dans cette feuille, il y a dans la colonne B, le code d'identification du matériel.
    J'ai créé une boîte de dialogue ou il y a 2 TextBox :
    - TextBox1 : Nom de la feuille à créer
    - TextBox2 : Numéro du code d'identification à rechercher

    Pour le moment j'utilise ce code, avec la fonction Find et FindNext.

    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
    48
    Private Sub CommandButton2_Click()
     
    If Me.TextBox1.Value = "" Then
        MsgBox "Veuillez indiquer un nom de feuille, merci."
        Me.TextBox1.SetFocus
    Exit Sub
    End If
     
    If Me.TextBox2.Value = "" Then
        MsgBox "Veuillez indiquer un numéro d'identification, merci."
        Me.TextBox2.SetFocus
    Exit Sub
    End If
     
     'création d'une feuille pour y copier les données
    Dim sh As Worksheet
    Set sh = Worksheets.Add
    sh.Name = TextBox1
     
    ' Rechercher dans la liste, historique du matériel voulu
    Dim LastLign As Long ' Dernière ligne de la liste dans la feuille SituationMateriel
    Dim NewLign As Long 'Dernière ligne de la liste dans la feuille recherche Matériel
    Dim Pcellule As Range 'Première cellule trouver
    Dim Num As String 'Code d'identification
     
     
    LastLign = Range("SituationMateriel!B1048576").End(xlUp).Row
    NewLign = 2
    Num = TextBox2
     
    With Worksheets("SituationMateriel").Range("B1:B" & LastLign)
        Set c = .Find(Num)
        Set Pcellule = c 'enregistre le premier élémént trouver
        If Not c Is Nothing Then
        Do
            c.EntireRow.Copy Destination:=Worksheets(TextBox1).Range("B" & NewLign) 'copie la ligne dans l'autre feuille
            Set c = .FindNext(c) ' recherche si il y a un autre code dans la liste
            NewLign = NewLign + 1
        Loop While Not c Is Nothing And c <> Pcellule
    End If
    End With
     
    'Vide la BDD
    Unload Me
    RechercherMateriel.Hide
    Choix_Action.Show
     
    End Sub
    Le but de ce code, est de permettre de copier coller tout les lignes ou apparait le code d’identification tapé dans la TextBox2. Ces lignes sont collées dans une feuille créer dont le nom est écrit dans la TextBox1.

    Lorsque j’effectue un débogage pas à pas détaillé, j’ai une erreur d’exécution de type 13 : Incompatibilité de type 13 qui apparait à la ligne n°36 . Je ne comprends pas d’où viens cette erreur.

    En vous remerciant d'avance pour votre aide.

    Cordialement

  2. #2
    Expert éminent
    Avatar de Marc-L
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2013
    Messages
    9 468
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2013
    Messages : 9 468
    Par défaut
    Bonjour,

    comme dans ta précédente discussion, tu dois donc vérifier les variables de cette ligne …

    Sinon la plage de destination est plus petite que la plage source !
    Si tu copies la ligne entière alors la destination devrait être en colonne A, non ?!

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Février 2013
    Messages
    24
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2013
    Messages : 24
    Par défaut
    Oui, il faut vérifier toutes les variables de la colonne B dans la feuille SituationMatériel, pour trouver la ou les celulles ou est le code d'identification. puis copier coller toute la ligne.

    Oui, je me suis trompé, ce n'est pas B mais A la destination des lignes copiées.

    Est-ce le bon code qu'il faut utiliser pour effectuer ce type de recherches ?

  4. #4
    Expert éminent
    Avatar de Marc-L
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2013
    Messages
    9 468
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2013
    Messages : 9 468
    Par défaut
    Nan, nan, je parlais des variables de la ligne n°36 ‼

    Aucune variable dans une colonne, uniquement des cellules …

  5. #5
    Membre averti
    Profil pro
    Inscrit en
    Février 2013
    Messages
    24
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2013
    Messages : 24
    Par défaut
    A vrai dire, je ne comprends pas trop, vérifier la variables de cette ligne ?
    La variable de la ligne c'est c, qui correspond à l'addresse ou a était trouvé le code d'identification ? Et c'est cette ligne qu'il faut copier puis coller dans une autre feuille.

  6. #6
    Expert éminent
    Avatar de Marc-L
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2013
    Messages
    9 468
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2013
    Messages : 9 468
    Par défaut

    Il y avait une erreur en ligne n°36, il fallait donc la vérifier, notamment les éléments variables y figurant …

    Et il y en a trois ‼

  7. #7
    Invité
    Invité(e)
    Par défaut Bonjour,
    si tu veux récupérer toutes les ligne qui match("A:A"), j'opterais pour un filtre actif en oubliant pas de supprimer le ligne de titre dans la ligne
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    LastLign =worckseets("SituationMateriel").usedrange.rows.count +1
    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
    Sub test()
    Dim L As Long
    L = Sheets("FichierClient").UsedRange.Rows.Count + 1
     
        FiltreActif Sheets("ImportClient").UsedRange, Sheets("Filtre").UsedRange, Sheets("FichierClient").Range("A" & L), False
    Sheets(FichierClient).Cells(L, 1).EntireRow.Delete
    End Sub
     
    Function FiltreActif(RangeSource As Range, CriterRange As Range, CopyRange As Range, Optional Unique As Boolean = True) As Boolean
    FiltreActif = False
    On Error Resume Next
     RangeSource.AdvancedFilter Action:= _
            xlFilterCopy, CriteriaRange:=CriterRange _
            , CopyToRange:=CopyRange, Unique:=Unique
            DoEvents
            If Err = 0 Then FiltreActif = True
            'MsgBox Err.Description
            On Error GoTo 0
    End Function

  8. #8
    Expert éminent
    Avatar de Marc-L
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2013
    Messages
    9 468
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2013
    Messages : 9 468
    Par défaut

    … ou de masquer la ligne des titres après le filtre avant la copie des cellules visibles …

  9. #9
    Membre Expert
    Homme Profil pro
    retraité
    Inscrit en
    Mars 2013
    Messages
    885
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2013
    Messages : 885
    Par défaut Réaliser une recherche
    Bonjour,

    Je ne connais pas ton niveau en Excel mais si tu débutes :
    Piixx-e évoque bien sûr les variables tableau à ne pas confondre avec les tableaux de la feuille Excel menu insertion.

    Cordialement,

  10. #10
    Membre averti
    Profil pro
    Étudiant
    Inscrit en
    Octobre 2013
    Messages
    63
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Octobre 2013
    Messages : 63
    Par défaut
    Citation Envoyé par nibledispo Voir le message
    Bonjour,

    Je ne connais pas ton niveau en Excel mais si tu débutes :
    Piixx-e évoque bien sûr les variables tableau à ne pas confondre avec les tableaux de la feuille Excel menu insertion.

    Cordialement,
    En effet, désolée pour mon manque de précision, c'est tout à fait ça

Discussions similaires

  1. Réponses: 3
    Dernier message: 04/02/2015, 18h19
  2. copier une table d'une BDD dans une table d'une autre BDD
    Par faniette dans le forum C++Builder
    Réponses: 2
    Dernier message: 15/05/2013, 10h17
  3. Réponses: 6
    Dernier message: 21/06/2012, 16h13
  4. Réponses: 7
    Dernier message: 25/02/2011, 13h06
  5. Comment faire une recherche dans une combobox et une sélection automatique
    Par VictoriusDan dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 11/12/2009, 16h17

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