Macro copier / coller sous condition
Nathalie.chassefaire
Messages postés
10
Date d'inscription
Statut
Membre
Dernière intervention
-
yg_be Messages postés 23541 Date d'inscription Statut Contributeur Dernière intervention -
yg_be Messages postés 23541 Date d'inscription Statut Contributeur Dernière intervention -
Bonjour à tous,
J'ai cherché ma solution dans différents forums mais je ne trouve pas alors je me permets de vous solliciter :-)
Je suis à la recherche d'une macro me permettant de copier coller des lignes de ma feuille 1 (alimentée de manière brute par une extraction depuis une liste sharepoint) vers ma feuille 2 seulement si ma colonne 3 contient "valeur A" et si la ligne n'est pas déjà présente dans ma feuille 2 (j'ai un numéro de ligne en colonne 1).
Je risque d'avoir un nombre important de données (environ 6000 lignes par an), il faudrait que la recherche soit simple afin qu'elle ne prenne pas trop de temps à s'exécuter.
Merci par avance pour votre aide précieuse!
J'ai cherché ma solution dans différents forums mais je ne trouve pas alors je me permets de vous solliciter :-)
Je suis à la recherche d'une macro me permettant de copier coller des lignes de ma feuille 1 (alimentée de manière brute par une extraction depuis une liste sharepoint) vers ma feuille 2 seulement si ma colonne 3 contient "valeur A" et si la ligne n'est pas déjà présente dans ma feuille 2 (j'ai un numéro de ligne en colonne 1).
Je risque d'avoir un nombre important de données (environ 6000 lignes par an), il faudrait que la recherche soit simple afin qu'elle ne prenne pas trop de temps à s'exécuter.
Merci par avance pour votre aide précieuse!
Configuration: Windows / Edge 86.0.622.56
A voir également:
- Macro copier / coller sous condition
- Historique copier coller - Guide
- Copier coller pdf - Guide
- Copier-coller - Accueil - Informatique
- Telecharger macro convertir chiffre en lettre excel - Télécharger - Tableur
- Style d'écriture a copier coller - Guide
5 réponses
yg_be
Messages postés
23541
Date d'inscription
Statut
Contributeur
Dernière intervention
Ambassadeur
1 584
bonjour,
tu n'as pas expliqué où tout cela devait arriver dans la feuille de destination.
il est sans doute préférable que tu partages un fichier d'exemple.
tu n'as pas expliqué où tout cela devait arriver dans la feuille de destination.
il est sans doute préférable que tu partages un fichier d'exemple.
Bonjour,
Effectivement! Désolée, je suis novice... ça se voit! :-)
Dans ma feuille de destination, il faut que ça s'incrémente à la suite du tableau actuel soit première ligne vide
Merci
Effectivement! Désolée, je suis novice... ça se voit! :-)
Dans ma feuille de destination, il faut que ça s'incrémente à la suite du tableau actuel soit première ligne vide
Merci
Li'dée :
- Onglet 1 : il s'agit de mon extraction brute sharepoint
- Onglet 2 (qui sera propre à chaque site) récupère dans l'onglet 1 les lignes qui concernent son site et qui ne sont pas déjà présentes dans l'onglet.
Dans l'exemple, il s'agit du site 1, il a fait sa mise à jour le 09/11/2020, et depuis, des nouvelles données ont été saisies dans le sharepoint qui sont maintenant dans l'onglet 1
J'espère avoir été assez claire sur mon explication
- Onglet 1 : il s'agit de mon extraction brute sharepoint
- Onglet 2 (qui sera propre à chaque site) récupère dans l'onglet 1 les lignes qui concernent son site et qui ne sont pas déjà présentes dans l'onglet.
Dans l'exemple, il s'agit du site 1, il a fait sa mise à jour le 09/11/2020, et depuis, des nouvelles données ont été saisies dans le sharepoint qui sont maintenant dans l'onglet 1
J'espère avoir été assez claire sur mon explication
pour pouvoir déterminer le site associé à l'onglet, il est nécessaire qu'il y ait déjà des données dans l'onglet.
je cherche comment ganger du temps:
serait-il possible d'utiliser une colonne de "extraction", pour indiquer que la ligne est déjà extraite? en fait, l'extraction de sharepoint recrée chaque fois la liste complète?
les numéros de ligne sont toujours croissants dans tous les onglets?
si une ligne de extraction est présente dans un des onglets, peut-on supposer que toutes les lignes précédentes ont déjà été traitées (pour tous les sites)?
je cherche comment ganger du temps:
serait-il possible d'utiliser une colonne de "extraction", pour indiquer que la ligne est déjà extraite? en fait, l'extraction de sharepoint recrée chaque fois la liste complète?
les numéros de ligne sont toujours croissants dans tous les onglets?
si une ligne de extraction est présente dans un des onglets, peut-on supposer que toutes les lignes précédentes ont déjà été traitées (pour tous les sites)?
serait-il possible d'utiliser une colonne de "extraction", pour indiquer que la ligne est déjà extraite? en fait, l'extraction de sharepoint recrée chaque fois la liste complète? => oui l'extraction sharepoint écrase tout à chaque fois
les numéros de ligne sont toujours croissants dans tous les onglets? => les numéros correspondent à ceux de la colonne 1 de l'extraction
si une ligne de extraction est présente dans un des onglets, peut-on supposer que toutes les lignes précédentes ont déjà été traitées (pour tous les sites)? => normalement oui, je vérifie
les numéros de ligne sont toujours croissants dans tous les onglets? => les numéros correspondent à ceux de la colonne 1 de l'extraction
si une ligne de extraction est présente dans un des onglets, peut-on supposer que toutes les lignes précédentes ont déjà été traitées (pour tous les sites)? => normalement oui, je vérifie
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
Bonjour,
un essai:
https://www.cjoint.com/c/JKsr4fpTy2Q
un essai:
https://www.cjoint.com/c/JKsr4fpTy2Q
J'ai vu ces 2 lignes qui avaient en commun "Action Dangereuse"
Donc voici le code pour tout le site 1:
Voilà
Donc voici le code pour tout le site 1:
Option Explicit Sub For_X_to_Next_Ligne() Dim FL1 As Worksheet, NoCol As Integer Dim NoLig As Long, Var As Variant Dim FL2 As Worksheet Dim derligne As Long Dim obj As Object Set FL1 = Worksheets("Extraction") 'a adapter Set FL2 = Worksheets("Suivi actions") 'a adapter NoCol = 3 'lecture de la colonne C Application.ScreenUpdating = False For NoLig = 1 To Split(FL1.UsedRange.Address, "$")(4) Var = FL1.Cells(NoLig, NoCol) If Var = "Site 1" Then derligne = FL2.Range("A" & Rows.Count).End(xlUp).Row + 1 Set obj = FL2.Columns("A").Find(FL1.Cells(NoLig, NoCol - 2), , , xlWhole) If Not obj Is Nothing Then MsgBox "La ligne " & obj.Rows & " existe déjà!", vbCritical, "Ajout de ligne" ' on peut supprimer le message Else FL1.Range("A" & NoLig & ":J" & NoLig).Copy _ Destination:=FL2.Range("A" & derligne) End If End If Next Set FL1 = Nothing Application.ScreenUpdating = True End Sub
Voilà