Copier coller avec conditionnelle TextBox

- - Dernière réponse :  gyrus - 5 juin 2019 à 13:18
Bonjour,

Je cherche à faire un copier coller selon une certaine conditionnelle:
Si les cellules de la colonne E de chaque feuille contient le même text que ma TextBox1,

Alors j'aimerais copier la ligne entière de chaque feuille (dont la cellule colonne E correspond à la TextBox1) dans mon classeur excel, et coller ces lignes les unes après les autres dans la Feuille (Feuil1)
qui est vide.

J'ai pour l'instant ce code VBA:
Private Sub TextBox1_Change()

Dim Sheets As Worksheets
Dim x As Integer
Dim Lastline As Integer
Lastline = Sheets("Feuil1").Range("A1048576").End(xlUp).Row + 1


For Each Sheets In ThisWorkbook.Worksheets

For x = 11 To 119

If Range("E" & x) Like "*" & TextBox1 & "*" Then
Range("E" & x).EntireRow.Copy
Sheets("Feuil1").Select
Sheets("Feuil1").Cells(Lastline, 1).EntireRow.Select
ActiveSheet.Paste


End If

Next
Next

End Sub

Mais il ne fonctionne pas... Y a t-il une solution?

En vous remerciant infiniment d'avance.

Configuration: Windows / Chrome 70.0.3538.110
Afficher la suite 

3 réponses

Meilleure réponse
1
Merci
Bonjour,

Essaye comme cela
Private Sub TextBox1_Change()
Dim Sh As Worksheet
Dim x As Integer, Lastline As Integer
With Worksheets("Feuil1")
For Each Sh In ThisWorkbook.Worksheets
If Sh.Name <> "Feuil1" Then
Lastline = .Range("A" & Rows.Count).End(xlUp).Row + 1
For x = 11 To 119
If Sh.Range("E" & x) Like "*" & TextBox1 & "*" Then
Sh.Range("E" & x).EntireRow.Copy .Rows(Lastline)
End If
Next
End If
Next
Application.CutCopyMode = False
End With
End Sub

Cordialement.

Dire « Merci » 1

Heureux de vous avoir aidé ! Vous nous appréciez ? Donnez votre avis sur nous ! Evaluez CommentCaMarche

CCM 62922 internautes nous ont dit merci ce mois-ci

Commenter la réponse de gyrus
1
Merci
Voici le code corrigé ...
Private Sub TextBox1_Change()
Dim Sh As Worksheet
Dim x As Integer, Lastline As Integer
With Worksheets("Feuil1")
For Each Sh In ThisWorkbook.Worksheets
If Sh.Name <> "Feuil1" Then
Lastline = .Range("E" & Rows.Count).End(xlUp).Row + 1
For x = 11 To Sh.Range("E" & Rows.Count).End(xlUp).Row
If Sh.Range("E" & x) Like "*" & TextBox1 & "*" Then
Sh.Range("E" & x).EntireRow.Copy .Rows(Lastline)
End If
Next
End If
Next
Application.CutCopyMode = False
End With
End Sub

Si cela ne convient pas, il faudra joindre un fichier exemple pour l'adapter au mieux.

Cordialement.

Dire « Merci » 1

Heureux de vous avoir aidé ! Vous nous appréciez ? Donnez votre avis sur nous ! Evaluez CommentCaMarche

CCM 62922 internautes nous ont dit merci ce mois-ci

Je vous remercie mille fois pour ce code qui me fais avancer.
ne peux malheureusement pas mettre mon fichier, étant un fichier confidentiel.
Mais il est constitué de cette façon:
Chaque feuille représente une ville
dans chaque feuille il y a un tableau avec le nom et le contact de personnes

Mon but est de faire une page de garde ou je tape dans ma textbox ce que je recherche, et que la ligne correspondante d'un tableau dans une ville apparaisse sur cette page de garde. Ainsi, je n'aurais plus à consulté chaque feuille.

Le code que vous m'avez donné fonctionne cette fois, il ne garde cependant pas la même mise en forme, et lorsque j'efface ma textbox rien ne s'efface. Je suis en train d'essayer de le faire fonctionner de cette façon mais n'étant pas une pro du VBA j'ai beaucoup de mal.
Pensez-vous que cela est possible?

En vous remerciant d'avance
Le fichier exemple que je demande ne nécessite pas de données confidentielles.
Il s'agit essentiellement de montrer la structure de ton classeur et de tes feuilles.
Pour permettre un test, ce fichier est indispensable. Pour toi, il suffit d'adapter ton classeur d'origine. Pour moi, il faut imaginer ce qu'il pourrait être.

Cordialement
Commenter la réponse de gyrus
0
Merci
Bonjour gyrus,

Je vous remercie de votre réponse.

Je viens d'essayer, il y a quelques soucis

J'avais mis for x = 11 to 119, parce que sur ma première feuille c'est le nombre de ligne que j'ai rempli, mais les autres feuilles contiennent peut être moins de lignes.
Peut être pourrai-je joindre toute les information sur une seule feuille? Ainsi la macro s'exécuterait peut être plus facilement?

Autre chose, lorsque j'écris dans ma TextBox, la macro se lance, affiche chaque ligne les unes après les autres, mais elles se remplacent jusqu'à n'en laisser plus qu'une, au lieu de se copier les unes après les autres.

Je vous remercie de votre réponse qui m'a déjà bien aidée!
Commenter la réponse de Kate30