You are most welcome. I am sure you will be able to modify it to suit your requirement.
See the hint below (again not the best solution but to start it is ok)
Sub copyRows()
Dim lRow As Long, lRow1 As Long, lRow2 As Long, i As Long, outRow As Long
With Sheets("ALL")
lRow1 = .Cells(Rows.Count, "G").End(xlUp).Row
lRow2 = .Cells(Rows.Count, "H").End(xlUp).Row
lRow = WorksheetFunction.Max(lrwo1, lRow2)
outRow = 1
For i = 1 To lRow
If .Range("G" & i).Value = "X" Or .Range("H" & i).Value = "X" Then
.Rows(i).Copy Destination:=Sheets("US-FR").Range("A" & outRow)
outRow = outRow + 1
End If
Next i
' Added for ES-PT
lRow1 = .Cells(Rows.Count, "G").End(xlUp).Row ' <--- Change here
lRow2 = .Cells(Rows.Count, "H").End(xlUp).Row ' <--- Change here
lRow = WorksheetFunction.Max(lrwo1, lRow2)
outRow = 1
For i = 1 To lRow
If .Range("G" & i).Value = "X" Or .Range("H" & i).Value = "X" Then ' <--- Change here
.Rows(i).Copy Destination:=Sheets("US-FR").Range("A" & outRow) ' <--- Change here
outRow = outRow + 1
End If
Next i
End With
End Sub
Code above not tested...
Also you should start OutRow at row 2 and have headers in Row 1
Clean output sheets before running the loops
Merge both loops into one
Use variables for sheetnames .... and so on. You will improve as you learn more.