Copier toutes les lignes d'un classeur ayant une cellule de même valeur

  • Initiateur de la discussion Initiateur de la discussion Cedric apf
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

Cedric apf

XLDnaute Nouveau
Désolé de demander autant d'aide, mais j'ai beau chercher des solutions par-ci par-là dans les forums je ne trouve pas ce que je cherche.

je voudrais créer une macro qui se lancera à partir d'un bouton et qui ira scanner toutes les colonnes E de toutes les feuilles du classeur (sauf pour la feuille 1, nommée "Base Clients") à la recherche des valeurs "NC" ou "nc".

Ensuite je souhaite que la macro copie toutes les lignes où les cellules "NC" ou "nc" ont été vues dans une nouvelle feuille.
 
Dernière édition:
Re : Copier toutes les lignes d'un classeur ayant une cellule de même valeur

Re,

Vois le lien ci dessous, paragraphe 1... si tu veux !

Lien supprimé

Cdt, Hulk.
Oui, merci, je connais très bien le fonctionnement d'un forum (je gère un petit site à mes heures perdues Xbox 360 France .com - Le site français sur la Xbox 360 et faisons la même chose pour ceux qui viennent poster leur première demande sur notre forum, mais uniquement pour quelqu'un de nouveau) et comme je t'ai répondu dans l'autre topic, je ne pensais pas qu'il fallait le faire ici systématiquement dès lors qu'on est plus tout à fait nouveau... mais je me plie au règles, pas de problème 😉
 
Re : Copier toutes les lignes d'un classeur ayant une cellule de même valeur

bonjour Cedric, Hulk

voici une solution.

Code:
Public Sub test()
Dim curWs As Worksheet, resWs As Worksheet, curCell As Range, resCell As Range
Dim i As Integer

ThisWorkbook.Worksheets.Add After:=ThisWorkbook.Worksheets(ThisWorkbook.Worksheets.Count)
Set resWs = ThisWorkbook.Worksheets(ThisWorkbook.Worksheets.Count)
Set resCell = resWs.Range("A1")

For Each curWs In ThisWorkbook.Worksheets
    With curWs
        If .Name <> "Base Clients" And .Name <> resWs.Name Then
            For i = 1 To .Cells(.Rows.Count, 5).End(xlUp).Row
                If UCase(.Cells(i, 5).Value) = "NC" Then
                    .Cells(i, 5).EntireRow.Copy resCell
                    Set resCell = resCell.Offset(1, 0)
                End If
            Next i
        End If
    End With
Next curWs

End Sub

a+
 

Pièces jointes

Re : Copier toutes les lignes d'un classeur ayant une cellule de même valeur

Waouh, super mromain, c'est pile poil ce que je cherchais à faire. J'ai vraiment beaucoup à apprendre en vba 😱

Je vais pouvoir analyser comment tu as programmer ça merci 😉

J'ai un peu de mise en forme à programmer et c'est tout good 😉
 
Dernière édition:
Re : Copier toutes les lignes d'un classeur ayant une cellule de même valeur

Re,

Finalement pour des raisons plus pratiques et pour plus de clarté dans mon fichier, plutôt que de mettre toutes les lignes scannées dans une nouvelle feuille du classeur, je préfèrerais que ce soit dans un nouveau fichier.

J'ai la formule pour ça :

Application.Workbooks.Add

Mais au sein de ta macro (qui marche nickel 😉) je ne sais pas trop quoi remplacer étant donné que je suis loin de tout comprendre. Je vois bien que c'est à la place des :

ThisWorkbook.Worksheets.Add After:=ThisWorkbook.Worksheets(ThisWorkbook.Worksheets.Count)
 
Re : Copier toutes les lignes d'un classeur ayant une cellule de même valeur

re,

voici le code modifié :


Code:
Public Sub test()
Dim curWs As Worksheet, curCell As Range, resCell As Range
Dim i As Integer

Dim newWbk As Workbook

Set newWbk = Application.Workbooks.Add
Set resCell = newWbk.Worksheets(1).Range("A1")

For Each curWs In ThisWorkbook.Worksheets
    With curWs
        If .Name <> "Base Clients" Then
            For i = 1 To .Cells(.Rows.Count, 5).End(xlUp).Row
                If UCase(.Cells(i, 5).Value) = "NC" Then
                    .Cells(i, 5).EntireRow.Copy resCell
                    Set resCell = resCell.Offset(1, 0)
                End If
            Next i
        End If
    End With
Next curWs

End Sub

a+
 
Re : Copier toutes les lignes d'un classeur ayant une cellule de même valeur

Je me suis trouvé une solution à partir de ta solution précédente en commandant des copier-coller, mais là faut avouer ton code est beaucoup plus simple, encore merci. 😉

Cependant, j'aimerai pouvoir affiner le scan des cellules en ne recopiant que les lignes contenant "NC" en colonne E mais n'ayant pas la valeur pas "NF" en colonne G.

C'est quoi le code, un If Not ??? Ça existe ?
 
Re : Copier toutes les lignes d'un classeur ayant une cellule de même valeur

re,

Code:
Public Sub test()
Dim curWs As Worksheet, curCell As Range, resCell As Range
Dim i As Integer

Dim newWbk As Workbook

Set newWbk = Application.Workbooks.Add
Set resCell = newWbk.Worksheets(1).Range("A1")

For Each curWs In ThisWorkbook.Worksheets
    With curWs
        If .Name <> "Base Clients" Then
            For i = 1 To .Cells(.Rows.Count, 5).End(xlUp).Row
                If UCase(.Cells(i, 5).Value) = "NC" [B]And UCase(.Cells(i, 7).Value) <> "NF" [/B]Then
                    .Cells(i, 5).EntireRow.Copy resCell
                    Set resCell = resCell.Offset(1, 0)
                End If
            Next i
        End If
    End With
Next curWs

End Sub

a+
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

Retour