Macro copier / coller sous condition
Nathalie.chassefaire
Messages postés
10
Statut
Membre
-
yg_be Messages postés 24281 Date d'inscription Statut Contributeur Dernière intervention -
yg_be Messages postés 24281 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
- Telecharger macro convertir chiffre en lettre excel - Télécharger - Tableur
- Style d'écriture a copier coller - Guide
- Historique copier coller windows - Accueil - Informatique
5 réponses
yg_be
Messages postés
24281
Date d'inscription
Statut
Contributeur
Dernière intervention
Ambassadeur
1 585
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à