Macro: déplacement sous condition d'une feuille à une autre

Bonjour à tous,

Cela fait un moment que je me creuse les méninges pour rédiger une macro qui permettrait un déplacement sous condition.

voici ce que j'aimerais pour la macro:

Si dans la colonne (de la feuille 1) "Raison", nous avons le terme "Assurance", Copier alors la ligne concernée dans la feuille 2, dans le tableau qui s'y rapporte (dans l'exemple ici : tableau des assurances)

merci pour votre aide.

Hello, essaie ceci :

Sub Deplacer()

Dim derlig1 As Integer, derlig2 As Integer

derlig1 = Sheets("Feuil1").Cells(65336, 4).End(xlUp).Row
derlig2 = Sheets("Feuil2").Cells(65336, 4).End(xlUp).Row

For Each Cell In Sheets("Feuil1").Range(Cells(2, 4), Cells(derlig1, 4))

If Cell.Value = "Assurances" Then
derlig2 = Sheets("Feuil2").Cells(65336, 4).End(xlUp).Row

Cell.EntireRow.Copy Destination:=Sheets("Feuil2").Cells(derlig2 + 1, 4).EntireRow

End If
Next
End Sub

Hello, essaie ceci :

Sub Deplacer()

Dim derlig1 As Integer, derlig2 As Integer

derlig1 = Sheets("Feuil1").Cells(65336, 4).End(xlUp).Row

For Each Cell In Sheets("Feuil1").Range(Cells(2, 4), Cells(derlig1, 4))

If Cell.Value = "Assurances" Then
derlig2 = Sheets("Feuil2").Cells(65336, 4).End(xlUp).Row

Cell.EntireRow.Copy Destination:=Sheets("Feuil2").Cells(derlig2 + 1, 4).EntireRow

End If
Next
End Sub

Merci beaucoup pour ta réponse, tout fonctionne correctement

Chu content alors !

serais-ce abusé que de demander une explication concernant le fonctionnement de cette macro ?

(traduire en mot ce qui est écrit) histoire que dans l'avenir je puisse suivre le même raisonnement

Nop, ce n'est pas abusé ^^

Sub Deplacer() 'Nom de la Sub

Dim derlig1 As Integer, derlig2 As Integer 'Déclaration des variables

derlig1 = Sheets("Feuil1").Cells(65336, 4).End(xlUp).Row 
'derlig1 (Variable) = Sheets("Feuil1") (Feuille concernée) .Cells(65336, 4).End(xlUp).Row (Partir de la cellule D65336 et remonter vers le haut (xlup) jusqu'à rentrerune cellule non-vide. Ca revient à faire "CTRL + flèche du haut" en VBA)

For Each Cell In Sheets("Feuil1").Range(Cells(2, 4), Cells(derlig1, 4))
'Lancement d'une boucle, qui balaie les cellules situées entre "D2" et "D[dernière ligne non vide]"

If Cell.Value = "Assurances" Then 'Si la valeur de la cellule est "Assurances"
derlig2 = Sheets("Feuil2").Cells(65336, 4).End(xlUp).Row 'Dernière ligne non vide de la feuille de destination, insérée dans la boucle pour que le recalcul se fasse à chaque nouvelle "Cell". Si en dehors de la boucle, alors tu n'auras qu'une ligne insérée dans la feuille de destination, correspondant à la dernière "Cell" trouvée

Cell.EntireRow.Copy Destination:=Sheets("Feuil2").Cells(derlig2 + 1, 4).EntireRow 'Copier la ligne de la "Cell" qui répond à la condition, la coller dans la feuille 2 après la dernière ligne non-vide de la colonne D* (derlig2 +1)

End If 'Fin de la condition
Next 'Cell suivante
End Sub 'Fin de la sub
 

Deux choses à ne pas oublier car m'ont posé pas mal de soucis :

  • Insérer le calcul de la variable derlig2 dans la boucle
  • Penser à rajouter un "+ 1" après le "derlig2" dans la cellule de destination

génial merci

génial merci

Rechercher des sujets similaires à "macro deplacement condition feuille"