Code VBA Copier coller
Fermé
souquet_vita
-
13 avril 2017 à 10:41
michel_m Messages postés 16602 Date d'inscription lundi 12 septembre 2005 Statut Contributeur Dernière intervention 16 décembre 2023 - 18 avril 2017 à 14:49
michel_m Messages postés 16602 Date d'inscription lundi 12 septembre 2005 Statut Contributeur Dernière intervention 16 décembre 2023 - 18 avril 2017 à 14:49
A voir également:
- Code VBA Copier coller
- Copier coller pdf - Guide
- Historique copier-coller android - Guide
- Symbole clavier copier coller - Guide
- Code puk bloqué - Guide
- Code asci - Guide
8 réponses
patty5046
Messages postés
46
Date d'inscription
lundi 8 février 2016
Statut
Membre
Dernière intervention
15 septembre 2023
5
13 avril 2017 à 11:46
13 avril 2017 à 11:46
Bonjour
J'ai testé ce code chez moi, il fonctionne...
Bon courage
J'ai testé ce code chez moi, il fonctionne...
Bon courage
michel_m
Messages postés
16602
Date d'inscription
lundi 12 septembre 2005
Statut
Contributeur
Dernière intervention
16 décembre 2023
3 313
13 avril 2017 à 12:08
13 avril 2017 à 12:08
Bonjour,
apparemment ca marche
mais tu pourrais faire mieux
par ex:
éviter d'activer sans cesse les feuilles pour le confort des yeux
ne boucler que sur le nombre de X
éviter les copy-paste si tu souhaites inscrire que des valeurs...
donc,
Dans l’attente
apparemment ca marche
mais tu pourrais faire mieux
par ex:
éviter d'activer sans cesse les feuilles pour le confort des yeux
ne boucler que sur le nombre de X
éviter les copy-paste si tu souhaites inscrire que des valeurs...
donc,
Mettre le classeur sans données confidentielles en pièce jointe sur « mon-partage.fr »
et faire un clic droit-coller le raccourci dans votre message
Dans l’attente
Merci pour vos réponses.
Par contre dans la pratique, pourquoi éviter les copy-paste ?
https://mon-partage.fr/f/NFOI6NV7/
Par contre dans la pratique, pourquoi éviter les copy-paste ?
https://mon-partage.fr/f/NFOI6NV7/
michel_m
Messages postés
16602
Date d'inscription
lundi 12 septembre 2005
Statut
Contributeur
Dernière intervention
16 décembre 2023
3 313
13 avril 2017 à 14:03
13 avril 2017 à 14:03
Par contre dans la pratique, pourquoi éviter les copy-paste ?
très lent
à n'utiliser que si on veut copier les formats, formules....
mais tu n'as pas répondu à ma question concernant ce que tu voulais copier...
très lent
à n'utiliser que si on veut copier les formats, formules....
mais tu n'as pas répondu à ma question concernant ce que tu voulais copier...
Ah pardon ! En fait je souhaiterais copier les lignes de la feuille analyses2 (de la colonne 1 à 9) dans la feuille Factures2 si dans la colonne Résultat il y a bien marqué OK. Sinon on ne copie pas la ligne.
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
michel_m
Messages postés
16602
Date d'inscription
lundi 12 septembre 2005
Statut
Contributeur
Dernière intervention
16 décembre 2023
3 313
13 avril 2017 à 15:00
13 avril 2017 à 15:00
re,
les entêtes dde la feuille factures ne correspondaient pas à celle de l'analyse
j'ai rectifié dans l'ordre "analyses
j'ai ajouté des commentaires bidon et n OK en fin de liste (86) pour tester
Code proposé:
le classeur
https://mon-partage.fr/f/rQ0bpm1M/
les entêtes dde la feuille factures ne correspondaient pas à celle de l'analyse
j'ai rectifié dans l'ordre "analyses
j'ai ajouté des commentaires bidon et n OK en fin de liste (86) pour tester
Code proposé:
Option Explicit
'---------------------------------------------
Sub copier_si_ok()
Dim Nbre As Integer, Cptr As Integer, Lig As Integer, Tampon
Dim Ligvid As Integer
'fige le défilement de l'écran: confort visuel,rapidité
Application.ScreenUpdating = False
'collecte avec la feuille "analyses"
With Sheets("Analyses2")
'nbre de OK colonne J
Nbre = Application.CountIf(.Columns("J"), "OK")
Lig = 2 'départ analyses
'Recherche ligne colonne J ="OK"
For Cptr = 1 To Nbre
Lig = .Columns("J").Find(what:="OK", after:=.Cells(Lig, "J")).Row
'valeurs colonnes A--->I à recopier
Tampon = .Range(.Cells(Lig, "A"), .Cells(Lig, "I"))
'on recopie dans la feuille facture
With Sheets("Factures2")
'1°ligne vide
Ligvid = .Columns("A").Find(what:="", after:=.Range("A1")).Row
'recopie les valeurs de l 'analyse OK sur la ligne et 9 colonnes (A--->I)
.Cells(Ligvid, "A").Resize(1, 9) = Tampon
End With
Next
End With
' montrer les factures
Sheets("Factures2").Activate
End Sub
le classeur
https://mon-partage.fr/f/rQ0bpm1M/
Merci Michel,
Je l'ai testé mais j'ai une petite question. Si je ne veux pas qu'il recopie à chaque fois l'ensemble des lignes où il y a OK (et du coup je me retrouve avec plein de doublon), est ce qu'il faut que je modifie la boucle, en la faisant démarrer seulement à partir des nouvelles lignes ou bien je peux ajouter une partie dans le code qui supprime les doublons crées ?
Emilie
Je l'ai testé mais j'ai une petite question. Si je ne veux pas qu'il recopie à chaque fois l'ensemble des lignes où il y a OK (et du coup je me retrouve avec plein de doublon), est ce qu'il faut que je modifie la boucle, en la faisant démarrer seulement à partir des nouvelles lignes ou bien je peux ajouter une partie dans le code qui supprime les doublons crées ?
Emilie
michel_m
Messages postés
16602
Date d'inscription
lundi 12 septembre 2005
Statut
Contributeur
Dernière intervention
16 décembre 2023
3 313
Modifié le 14 avril 2017 à 17:05
Modifié le 14 avril 2017 à 17:05
Bonjour
Pourquoi demander quelque chose de faux ???
ce n'est pas un manque de connaissance en VBa mais un manque d'analyse du système d'information voulu...
:-((
en la faisant démarrer seulement à partir des nouvelles lignes
Michel
Pourquoi demander quelque chose de faux ???
ce n'est pas un manque de connaissance en VBa mais un manque d'analyse du système d'information voulu...
:-((
en la faisant démarrer seulement à partir des nouvelles lignes
ub copier_si_ok()
Dim Nbre As Integer, Derlig As Integer, Cptr As Integer, Lig As Integer, Tampon
Dim Ligvid As Integer
'fige le défilement de l'écran: confort visuel,rapidité
Application.ScreenUpdating = False
'collecte avec la feuille "analyses"
With Sheets("Analyses2")
Derlig = .Columns("A").Find(what:="*", searchdirection:=xlPrevious).Row
Nbre = Application.CountIf(.Range("J" & Derlig & ":J10000"), "OK")
If Nbre = 0 Then Exit Sub
Lig = Derlig 'départ analyses--
.......'suite sans changement
Michel
michel_m
Messages postés
16602
Date d'inscription
lundi 12 septembre 2005
Statut
Contributeur
Dernière intervention
16 décembre 2023
3 313
14 avril 2017 à 19:38
14 avril 2017 à 19:38
errata
au lieu de
Nbre = Application.CountIf(.Range("J" & Derlig & ":J10000"), "OK")
écrire
Nbre = Application.CountIf(.Range("J" & Derlig +1 & ":J10000"), "OK")
michel_m
Messages postés
16602
Date d'inscription
lundi 12 septembre 2005
Statut
Contributeur
Dernière intervention
16 décembre 2023
3 313
18 avril 2017 à 14:49
18 avril 2017 à 14:49
MERCI
de rien...
de rien...