Macro copier contenu de certains onglets

  • Initiateur de la discussion Initiateur de la discussion edi
  • 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 !

edi

XLDnaute Nouveau
Bonjour à tous,
J'ai un fichier excel avec 5 feuilles et la première est nommée « IG ».
L’objectif de la macro est que si les lignes des différentes feuilles remplissent certaines conditions, alors on doit copier certaines cellules de ces lignes dans la feuille « Alertes_recos ».
J’ai deux soucis avec ma macro:

1. La fonction if devrait remplir les trois conditions (Range("l" & i) = "Échéance proche" Or Range("l" & i) = "En retard" And Range("g" & i) = "DPO") et la cela ne fonctionne pas tel qu’écrit. La première condition à remplir est Range("l" & i) = "Échéance proche" Or Range("l" & i) = "En retard" et ensuite la dernière doit être remplie également.

2. Le deuxième souci est que je souhaite qu’à l’ajout d’une nouvelle ligne qui remplit les conditions dans l’une des feuilles, l’exécution de la macro puisse ajouter cette ligne et non pas dupliquer les autres résultats déjà affichés. (Actuellement lorsque j’exécute la macro deux fois, les lignes qui remplissent les conditions sont dupliquées dans l’onglet « Alertes_recos ».

La macro est en pièce jointe.
Merci de votre aide... je suis coincé.

Crdlt
Edi
 

Pièces jointes

Re : Macro copier contenu de certains onglets

Bonjour,

essaye peut être ceci :
Code:
If (Range("l" & i) = "Échéance proche" Or Range("l" & i) = "En retard") And Range("g" & i) = "DPO" Then

il eut été préférable de nous joindre un fichier excel avec le code à l'interieur plutôt qu'un word... plus facile pour tester..

bonne journée
@+
 
Re : Macro copier contenu de certains onglets

Re,

regarde ceci :
Code:
Sub MAJ()
Dim ws As Worksheet, x As Range, i As Long
For Each ws In Worksheets
    With ws
        For i = 2 To .Cells(.Rows.Count, 1).End(xlUp).Row
            If (.Cells(i, 6) = "Échéance proche" Or .Cells(i, 8) = "En retard") And .Cells(i, 4) = "DPO" Then
                Set x = Sheets("Alertes_Recos").Columns(1).Find(.Cells(i, 1), , xlValues, xlWhole, , , False)
                If Not x Is Nothing Then
                    .Range("a" & i & ":b" & i & ",e" & i & ",g" & i & ":h" & ",j" & i & ":l" & i).Copy Sheets("Alertes_Recos").Cells(Rows.Count, 1).End(xlUp)(2).Resize(, 8)
                End If
            End If
        Next i
    End With
Next ws
End Sub

verifie bien les numéros de colonnes.... il faut que tous les onglets aient la même construction...
 
Re : Macro copier contenu de certains onglets

Re, J'ai essayé en adaptant les numéros de colonne mais la macro ne donne aucun résultat.
Pourtant les onglets ont les mêmes colonnes.

Sub MAJ()
Dim ws As Worksheet, x As Range, i As Long
For Each ws In Worksheets
With ws
For i = 2 To .Cells(.Rows.Count, 1).End(xlUp).Row
If (.Cells(i, 12) = "Échéance proche" Or .Cells(i, 12) = "En retard") And .Cells(i, 7) = "DPO" Then
Set x = Sheets("Alertes_Recos").Columns(1).Find(.Cells(i, 1), , xlValues, xlWhole, , , False)
If Not x Is Nothing Then
.Range("a" & i & ":b" & i & ",e" & i & ",g" & i & ":h" & ",j" & i & ":l" & i).Copy Sheets("Alertes_Recos").Cells(Rows.Count, 1).End(xlUp)(2).Resize(, 8)
End If
End If
Next i
End With
Next ws
End Sub
 
Re : Macro copier contenu de certains onglets

Re,

attention manquait un numéro de ligne :

Code:
Option Explicit
Sub MAJ()
 Dim ws As Worksheet, x As Range, i As Long
 For Each ws In Worksheets
     With ws
         For i = 2 To .Cells(.Rows.Count, 1).End(xlUp).Row
             If (.Cells(i, 6) = "Échéance proche" Or .Cells(i, 8) = "En retard") And .Cells(i, 4) = "DPO" Then
                 Set x = Sheets("Alertes_Recos").Columns(1).Find(.Cells(i, 1), , xlValues, xlWhole, , , False)
                 If Not x Is Nothing Then
                     .Range("a" & i & ":b" & i & ",e" & i & ",g" & i & ":h" & i & ",j" & i & ":l" & i).Copy Sheets("Alertes_Recos").Cells(Rows.Count, 1).End(xlUp)(2).Resize(, 8)
                 End If
             End If
         Next i
     End With
 Next ws
 End Sub
 
- 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

Réponses
9
Affichages
603
Réponses
7
Affichages
627
Réponses
3
Affichages
592
Réponses
0
Affichages
472
Retour