I am not sure I have understood your requirements. Is this what you want?
library(tidyverse)
#> Warning: package 'tibble' was built under R version 4.1.2
DAT <- data.frame(Source=c('s1','s1','s1','s2','s2','s2','s2',
's3','s3','s3','s3','s2'),
Province=c('p1','p2','p3','p4','p2','p2','p3',
'p2','p1','p2','p1','p2'),
Territoire = c('t1','t2','t3','t3', 't2','t2', 't3',
't2','t4','t5','t1','t6'),
Marche=c('m1','m2','m3','m4','m5','m6','m3',
'm2','m7','m8','m9','m10'))
S2and3 <- DAT |> filter(Source %in% c('s2', 's3'))
S1 <- DAT |> filter(Source == 's1')
S1_keep <- anti_join(S1,S2and3, by =c("Province", "Territoire", "Marche"))
S1_remove <- semi_join(S1,S2and3, by =c("Province", "Territoire", "Marche"))
DAT2 <- rbind(S1_keep,S2and3)
DAT2
#> Source Province Territoire Marche
#> 1 s1 p1 t1 m1
#> 2 s2 p4 t3 m4
#> 3 s2 p2 t2 m5
#> 4 s2 p2 t2 m6
#> 5 s2 p3 t3 m3
#> 6 s3 p2 t2 m2
#> 7 s3 p1 t4 m7
#> 8 s3 p2 t5 m8
#> 9 s3 p1 t1 m9
#> 10 s2 p2 t6 m10
DAT3 <- anti_join(S2and3,S1_remove, by =c("Province", "Territoire", "Marche"))
DAT3
#> Source Province Territoire Marche
#> 1 s2 p4 t3 m4
#> 2 s2 p2 t2 m5
#> 3 s2 p2 t2 m6
#> 4 s3 p1 t4 m7
#> 5 s3 p2 t5 m8
#> 6 s3 p1 t1 m9
#> 7 s2 p2 t6 m10
Created on 2022-05-23 by the reprex package (v2.0.1)