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 valeur sous VBA avec un bouton recherche


Sujet :

Macros et VBA Excel

  1. #1
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2013
    Messages
    32
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2013
    Messages : 32
    Points : 13
    Points
    13
    Par défaut Copie de valeur sous VBA avec un bouton recherche
    Bonjour,

    Je travaille sur un projet en utilisant VBA sous EXCEL, et j'ai un petit soucis !!

    J'ai un fichier avec plus de 1000 lignes et plusieurs lignes correspond a une entrée (ex /COLLC1111 ou /COLLC1212 ou bien /JEGUC0017).

    Lorsque j'appuie sur le bouton recherche, et que je tape l'entrée voulu (/COLLC1111 par ex), je dois avoir toutes les lignes de B à I enregistrer sur la feuille 2.

    J'ai commencé à exécuter un code mais cela ne fonctionne, pouvez vous m'aider et m'orienter sur ma démarche svp.

    En vous remerciant!
    Fichiers attachés Fichiers attachés

  2. #2
    Membre expert
    Homme Profil pro
    Retraité
    Inscrit en
    Avril 2011
    Messages
    1 858
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Avril 2011
    Messages : 1 858
    Points : 3 974
    Points
    3 974
    Par défaut
    Bonjour,

    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
    Private Sub CommandButton1_Click()
    Dim Cel As Range
    Dim Ligne As Long
        Application.ScreenUpdating = False
        Ligne = 2
        With Sheets("Feuil2")
            .Range("A2:I" & .Range("A2").End(xlDown).Row).ClearContents
            For Each Cel In Sheets("donnees").Range("A2:A" & Sheets("donnees").Range("A2").End(xlDown).Row)
                If Cel.Value = Me.TextBox1.Value Then
                    Cel.Offset(0, 1).Resize(1, 8).Copy .Range("A" & Ligne)
                    Ligne = Ligne + 1
                End If
            Next Cel
        End With
        Unload Me
    End Sub
    Cordialement.

  3. #3
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2013
    Messages
    32
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2013
    Messages : 32
    Points : 13
    Points
    13
    Par défaut
    bonjour,
    ok je vous remercie
    cdt

  4. #4
    Invité
    Invité(e)
    Par défaut
    Variante:
    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
    Option Explicit
     
    Private Sub CommandButton1_Click()
     
      Dim strValeur As String
     
      strValeur = Me.TextBox1.Text
      Worksheets("Feuil2").Cells.Clear
     
      With ActiveSheet
          .Range("A1").AutoFilter Field:=1, Criteria1:=strValeur
          .UsedRange.SpecialCells(xlCellTypeVisible).Copy Worksheets("Feuil2").[A1]
          Worksheets("Feuil2").Columns(1).Delete
          .AutoFilterMode = False
      End With
     
      Unload Me
     
    End Sub

  5. #5
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2013
    Messages
    32
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2013
    Messages : 32
    Points : 13
    Points
    13
    Par défaut
    très bien merci beaucoup

  6. #6
    Membre habitué
    Homme Profil pro
    Inscrit en
    Juin 2013
    Messages
    101
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Secteur : Finance

    Informations forums :
    Inscription : Juin 2013
    Messages : 101
    Points : 149
    Points
    149
    Par défaut
    Bonjour,

    Je suis en retard mais puisqu'elle est codée, voici une variante v2.0 avec un dictionary.

    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
     
    Sub TEST()
        Dim myCol1 As String, mystring As String
        Dim myDico As Object
        Dim mysheet As Worksheet, myOPsheet As Worksheet
        Dim myrange As Range
     
        myCol1 = InputBox("Valeur recherchée")
        Set mysheet = ThisWorkbook.Worksheets(1)
     
        If Not myCol1 = "" Then
            If mysheet.Cells.Find(myCol1) <> "" Then
                Set myDico = CreateObject("Scripting.dictionary")
                Set myrange = mysheet.Range("A1")
                Do Until myrange = ""
                    If myrange.Offset(, 1) = myCol1 Then
                        For i = 0 To 8
                            mystring = mystring & "," & myrange.Offset(, i)
                        Next
                        myDico.Add myrange.Row, Mid(mystring, 2, Len(mystring))
                        mystring = ""
                    End If
                    Set myrange = myrange.Offset(1)
                Loop
                If myDico.Count > 0 Then
                    With ThisWorkbook.Worksheets(2)
                    .Activate
                        .Cells.ClearContents
                        .Range("A1").Resize(myDico.Count).Value = Application.Transpose(myDico.Items)
                        .Range("A1").Resize(myDico.Count).TextToColumns Comma:=True
                    End With
                End If
            End If
        End If   
    End Sub

  7. #7
    Expert éminent sénior
    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
    Points : 18 674
    Points
    18 674
    Par défaut
    Moi aussi j'étais en retard et j'ai enlevé mon post quasi équivalent à celui de Vincent …

    Franchement dans un cas comme celui là, la copie de données filtrées est rapide et simple tout en évitant l'usine à gaz ‼
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    Sub Demo()
        Feuil2.Cells.ClearContents
        Feuil1.[A1].AutoFilter 1, "/COLLC1111"
        Feuil1.Columns("B:I").SpecialCells(xlCellTypeVisible).Copy Feuil2.[B1]
        Feuil1.[A1].AutoFilter
    End Sub

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

Discussions similaires

  1. faire une boucle sous vba avec condition
    Par ons1402 dans le forum Macros et VBA Excel
    Réponses: 8
    Dernier message: 05/03/2012, 17h16
  2. Création graph sous vba avec fonction Range
    Par chrystobale dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 18/03/2009, 13h33
  3. relier une interface programmée sous VBA avec un classeur excel
    Par lio911_lio dans le forum Macros et VBA Excel
    Réponses: 5
    Dernier message: 27/08/2008, 14h18
  4. Imprimer une requête en Paysage sous VBA avec des raccourcis clavier.
    Par Armagnak dans le forum Requêtes et SQL.
    Réponses: 2
    Dernier message: 18/08/2006, 10h51
  5. Lien sous Macromedia avec un bouton Flash
    Par Eisy dans le forum Balisage (X)HTML et validation W3C
    Réponses: 4
    Dernier message: 12/05/2006, 15h26

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