Copier coller avec conditionnelle TextBox
Kate30
-
gyrus -
gyrus -
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.
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
A voir également:
- Copier coller avec conditionnelle TextBox
- Mise en forme conditionnelle excel - Guide
- Historique copier coller - Guide
- Copier coller pdf - Guide
- Copier-coller - Accueil - Informatique
- Style d'écriture a copier coller - Guide
3 réponses
Bonjour,
Essaye comme cela
Cordialement.
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.
Voici le code corrigé ...
Si cela ne convient pas, il faudra joindre un fichier exemple pour l'adapter au mieux.
Cordialement.
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.
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
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
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
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!
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!