Commande VBA copier/coller sous condition ou rechercheV
Résolu/Fermé
Gilles.DR315
Messages postés
26
Date d'inscription
samedi 2 novembre 2013
Statut
Membre
Dernière intervention
27 janvier 2015
-
2 nov. 2013 à 15:02
Gilles.DR315 Messages postés 26 Date d'inscription samedi 2 novembre 2013 Statut Membre Dernière intervention 27 janvier 2015 - 12 avril 2014 à 21:44
Gilles.DR315 Messages postés 26 Date d'inscription samedi 2 novembre 2013 Statut Membre Dernière intervention 27 janvier 2015 - 12 avril 2014 à 21:44
A voir également:
- Vba recherchev dans un autre classeur
- Incompatibilité de type vba ✓ - Forum Programmation
- Si(recherchev vrai alors) ✓ - Forum Excel
- Find vba - Astuces et Solutions
- Vba écrire dans une cellule ✓ - Forum Excel
- Recherchev dans un tableau croisé dynamique - Forum Excel
3 réponses
via55
Messages postés
14512
Date d'inscription
mercredi 16 janvier 2013
Statut
Membre
Dernière intervention
18 janvier 2025
2 740
2 nov. 2013 à 15:27
2 nov. 2013 à 15:27
Bonjour
Par exemple :
Sub copie()
For n = 1 To 3
d = Range("B" & n).Value
dlg = Sheets("Feuil2").Range("B" & Rows.Count).End(xlUp).Row
For t = 1 To dlg
If Sheets("Feuil2").Range("B" & t) = d Then Sheets("Feuil2").Range("A" & t).Value = Sheets("Feuil1").Range("A" & n).Value
Next t
Next n
End Sub
Cdlmnt
Par exemple :
Sub copie()
For n = 1 To 3
d = Range("B" & n).Value
dlg = Sheets("Feuil2").Range("B" & Rows.Count).End(xlUp).Row
For t = 1 To dlg
If Sheets("Feuil2").Range("B" & t) = d Then Sheets("Feuil2").Range("A" & t).Value = Sheets("Feuil1").Range("A" & n).Value
Next t
Next n
End Sub
Cdlmnt
Gilles.DR315
Messages postés
26
Date d'inscription
samedi 2 novembre 2013
Statut
Membre
Dernière intervention
27 janvier 2015
1
Modifié par Gilles.DR315 le 2/11/2013 à 15:36
Modifié par Gilles.DR315 le 2/11/2013 à 15:36
Merci bien.
Cdt
Cdt
Gilles.DR315
Messages postés
26
Date d'inscription
samedi 2 novembre 2013
Statut
Membre
Dernière intervention
27 janvier 2015
1
Modifié par Gilles.DR315 le 13/11/2013 à 23:40
Modifié par Gilles.DR315 le 13/11/2013 à 23:40
Bonjour,
Je reviens sur ce sujet
La formule fonctionne mais partiellement.
J'arrive à copier mes valeurs de Feuil1 vers Feuil2
Mais ce qui me manque, c'est de ne rien faire si la cellule est vide en Feuil1
Exemple ci-dessous. Avec E52:E54 (Dans ces cellules il y a les montants à envoyer en Feuil2) dans F52:F54 (Les dates)
Si F53 F54 sont vide, et que je veux copier E52 çà me provoque une erreur.
Mon erreur d'execution survient uniquement si F52:F54 sont vides, E52:E54 ne sont pas concernés par l'erreur si elles sont vide.
C'est donc les dates qui posent problème
Ou je dois mettre si F53:F54 est vide, alors ne rien faire.
comment l'écrire.
Merci de votre appui.
Je reviens sur ce sujet
La formule fonctionne mais partiellement.
J'arrive à copier mes valeurs de Feuil1 vers Feuil2
Mais ce qui me manque, c'est de ne rien faire si la cellule est vide en Feuil1
Exemple ci-dessous. Avec E52:E54 (Dans ces cellules il y a les montants à envoyer en Feuil2) dans F52:F54 (Les dates)
Si F53 F54 sont vide, et que je veux copier E52 çà me provoque une erreur.
Mon erreur d'execution survient uniquement si F52:F54 sont vides, E52:E54 ne sont pas concernés par l'erreur si elles sont vide.
C'est donc les dates qui posent problème
Ou je dois mettre si F53:F54 est vide, alors ne rien faire.
comment l'écrire.
Merci de votre appui.
Sub envoyerdonnées()
For n = 52 To 54
d = Range("F" & n).Value
dlg = Sheets("Feuil2").Range("K" & Rows.Count).End(xlUp).Row
For t = 1 To dlg
If Sheets("Feuil2").Range("K" & t) = d Then Sheets("Feuil2").Range("E" & t).Value = Sheets("Feuil1").Range("E" & n).Value
Next t
Next n
End Sub
via55
Messages postés
14512
Date d'inscription
mercredi 16 janvier 2013
Statut
Membre
Dernière intervention
18 janvier 2025
2 740
14 nov. 2013 à 11:57
14 nov. 2013 à 11:57
Bonjour,
Je ne comprends pas, j'ai copié ta macro et je l'ai fait tourner avec des cellules vides en F23 et 54 et pas d'erreur, la copie se fait bien
Peut être que tes cellules ne sont pas vraiment vides (formule, liaison avec une autre feuille ou classeur ?)
Essaye de rajouter cette ligne apres le For n=52 to 54
If IsDate(Range("F" & n)) Then
et tu mets un End if entre nExt t et Next n
Cdlmnt
Je ne comprends pas, j'ai copié ta macro et je l'ai fait tourner avec des cellules vides en F23 et 54 et pas d'erreur, la copie se fait bien
Peut être que tes cellules ne sont pas vraiment vides (formule, liaison avec une autre feuille ou classeur ?)
Essaye de rajouter cette ligne apres le For n=52 to 54
If IsDate(Range("F" & n)) Then
et tu mets un End if entre nExt t et Next n
Cdlmnt
Gilles.DR315
Messages postés
26
Date d'inscription
samedi 2 novembre 2013
Statut
Membre
Dernière intervention
27 janvier 2015
1
29 déc. 2013 à 13:57
29 déc. 2013 à 13:57
Merci.
J'ai du reprendre cette macro.
J'ai rajouté If IsDate(Range("F" & n)) Then
et çà marche
J'ai du reprendre cette macro.
J'ai rajouté If IsDate(Range("F" & n)) Then
et çà marche
Gilles.DR315
Messages postés
26
Date d'inscription
samedi 2 novembre 2013
Statut
Membre
Dernière intervention
27 janvier 2015
1
Modifié par Gilles.DR315 le 12/04/2014 à 16:06
Modifié par Gilles.DR315 le 12/04/2014 à 16:06
Bonjour,
Je reviens sur ce post.
Sur cette ligne
Je n'arrive à attribuer à n : les valeurs 14,15,43,44 et 45
Comment puis-je faire ?
Les virgules, les points virgules ne marchent pas.
çà doit être tout bête. mais je cale.
Merci
Je reviens sur ce post.
Sur cette ligne
For n = 14 To 15
Je n'arrive à attribuer à n : les valeurs 14,15,43,44 et 45
Comment puis-je faire ?
Les virgules, les points virgules ne marchent pas.
çà doit être tout bête. mais je cale.
Merci
via55
Messages postés
14512
Date d'inscription
mercredi 16 janvier 2013
Statut
Membre
Dernière intervention
18 janvier 2025
2 740
12 avril 2014 à 19:18
12 avril 2014 à 19:18
Bonjour
Les valeurs dans For doivent se suivre de 1 si rien d'indiqué, ou du pas indiqué mais qui sera toujours le même ex For n= 2 to 8 step 2 avec le pas de 2 n prendra successivement les valeurs 2, 4, 6 et 8
Dans ton cas tu dois faire 2 boucles successives
For n= 14 to 15
instructions
next n
For n= 43 to 45
instructions
next n
NB si les instructions sont les mêmes tu peux ne les écrire qu'une seule fois dans une autre Sub, que tu appelles par ex envoidonnees et à laquelle tu fera appel dans chaque boucle
For n= 14 to 15
envoidonnes
next n
etc..
Cdlmnt
Les valeurs dans For doivent se suivre de 1 si rien d'indiqué, ou du pas indiqué mais qui sera toujours le même ex For n= 2 to 8 step 2 avec le pas de 2 n prendra successivement les valeurs 2, 4, 6 et 8
Dans ton cas tu dois faire 2 boucles successives
For n= 14 to 15
instructions
next n
For n= 43 to 45
instructions
next n
NB si les instructions sont les mêmes tu peux ne les écrire qu'une seule fois dans une autre Sub, que tu appelles par ex envoidonnees et à laquelle tu fera appel dans chaque boucle
For n= 14 to 15
envoidonnes
next n
etc..
Cdlmnt
Gilles.DR315
Messages postés
26
Date d'inscription
samedi 2 novembre 2013
Statut
Membre
Dernière intervention
27 janvier 2015
1
Modifié par Gilles.DR315 le 12/04/2014 à 21:44
Modifié par Gilles.DR315 le 12/04/2014 à 21:44
Merci bien pour ce conseil.