copier coller un peu special

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

Profane

XLDnaute Occasionnel
Bonjour le forum
j'expose mon soucis :
je dispose d un fichier xls avec plusieurs onglets
un onglet Analyse
et 3 onglets (site1,site2,site3), stucturer sous la meme forme et les memes champs
le tout est de copier lors de la modification d'un champ dans une colonne la ligne vers l'onglet Analyse, ca ca fonctionne bien !!
avec le code suivant, la valeur a chercher est "libre"

Private Sub Worksheet_Change(ByVal Target As Range)

Dim cel As Range 'déclare la variable cel
Dim dest As Range 'déclare la variable dest

'boucle sur les cellules pouvant contenir la valeur libre
For Each cel In Range("E2:E65536")

'condition : si la valeur de la cellule contient la valeur libre
If cel.Value = "libre" Then
Set dest = Sheets("Analyse").Range("B65536").End(xlUp).Offset(1, 0) 'définit la variable dest
cel.EntireRow.Resize(, 255).Copy Destination:=dest 'copy la ligne de la cellule
End If 'fin de la condition

Next cel 'prochaine cellule de "E2:E65536"
End Sub

Mon soucis est : comment supprimer une ligne precedement copier qui ne rempli plus la condition "libre" dans l'onglet de reference

@++
 
Dernière édition:
Re : copier coller un peu special

Re-,
attention ton code recopies TOUTES les lignes dont le contenu de la cellule Exx est égal à "libre", donc une foultitude de doublons sur ta feuille de destination.
tout d'abord, comment rentres-tu ta cellule? une par une, par incrémentation, par CTRL + Entrée?
Ensuite, pour enlever celles ne correspondant plus au statut "libre", sur combien de colonnes doit être fait la recherche d'équivalence? y-a-t-il un numéro spécifique pour chaque ligne (style numéro de l'appartement ou de l'emplacement de camping......)
et enfin, que désires-tu faire dans la feuille de destination afin d'enlever l'appartement ou.... qui n'est plus "libre" : supprimer la ligne, l'effacer puis effectuer un tri afin de déplacer les lignes vides vers le bas
Ensuite, il sera bien plus facile de répondre
 
Re : copier coller un peu special

Bonjour Profane, Bonjour bhbh

Pour ton problème j'ai une macros qui supprime les lignes en doubles si sa t'interesse, ou sinon j'ai une macros qui permet par exemple pour une colonne
contenant les mots "libre" "test" "truc" de copier toutes les lignes ou sont écris ces mots et de créer un onglet pour chaque mot donc dans mon exemple 3 onglets crée, après un petit bout de ton fichier serait la bienvenue
pour que l'on puisse un peu mieux t'aider, en attendant la macro pour supprimer des lignes en doubles :

Code:
Sub LignesDoubles()
 
 Application.ScreenUpdating = False
 
 
ligne = 3 'On démarre a partir de la 3eme cellule à adapter selon ton fichier

' Si le contenu de la cellule n'est pas vide nous continuons de lire les lignes
While Range("C" & ligne).Value <> ""
' Si la valeur de la cellule est = à la valeur de la cellule précédente alors,
' sélection de la ligne entière
If Range("C" & ligne).Value = Range("C" & ligne + 1).Value Then
Range("C" & ligne + 1).Activate
Range("C" & ligne + 1).Select
' Suppression de la ligne sélectionnée
Selection.EntireRow.Delete
End If
' Passage à la ligne suivante
ligne = ligne + 1
' Si la valeur de la cellule égale à rien
While Range("C" & ligne).Value = ""
' Alors descente d'une ligne
ligne = ligne + 1
' Si la valeur de la cellule est égale à la valeur de la cellule précédente alors,
' sélection de la ligne entière
If Range("C" & ligne).Value = Range("C" & ligne + 1).Value Then
Range("C" & ligne + 1).Activate
Range("C" & ligne + 1).Select
' Suppression de la ligne sélectionnée
Selection.EntireRow.Delete
End If
' Si la valeur de la cellule = rien
While Range("C" & ligne).Value = ""
' Positionnement en (A2)
Range("C2").Select
' Arrêt de la macro

Application.ScreenUpdating = True

Exit Sub
Wend
Wend
Wend
End Sub

Voilà après a toi d'adapter en fonction de la colonne désirée la c'estla colonne C .

Cordialement
Jean-Mikaël
 
Re : copier coller un peu special

merci de vos reponses 🙂
@bhbh
en fait je rentre la valeur libre manuellement en allant dans l onglet du site , je selectionne la ligne concernée, et je rentre la valeur libre quand l'emplacement est libéré

pour ce qui est de la ligne copiée , effectivement il y a un index c'est le champ de la colonne A de la ligne a copier, qui se retrouve en décalage en ligne B sur la destination

et pour la suppression, je souhaiterais effacer toute la ligne ne repondant plus au critére "libre", puis effectuer un tri afin de déplacer les lignes vides vers le bas, le tout trier par le champ (B) sur la feuille de destination

si tu as des idees je suis preneur

@jeanmikael
je regarde le code, et je le teste

@++
 
Re : copier coller un peu special

Re-, regarde le fichier joint :
dès que tu mets "libre" dans une de tes feuilles Site, c'est copié automatiquement dans la feuille analyse
si ce n'est plus libre, effacé et feuille triée s'il y a plus de 3 lignes (avec les titres)
 

Pièces jointes

- 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
3
Affichages
869
Réponses
14
Affichages
1 K
Réponses
7
Affichages
922
Retour