Copier/Coller une cellule avec une fonction SI
Résolu/Fermé
Roazak
Messages postés
15
Date d'inscription
mardi 4 juin 2013
Statut
Membre
Dernière intervention
22 novembre 2016
-
6 juin 2013 à 11:22
NeoTsu Messages postés 58 Date d'inscription jeudi 6 juin 2013 Statut Membre Dernière intervention 19 juin 2013 - 7 juin 2013 à 15:14
NeoTsu Messages postés 58 Date d'inscription jeudi 6 juin 2013 Statut Membre Dernière intervention 19 juin 2013 - 7 juin 2013 à 15:14
A voir également:
- Fonction copier coller excel
- Liste déroulante excel - Guide
- Excel fonction si et - Guide
- Copier coller pdf - Guide
- Formule excel - Guide
- Copier une vidéo youtube - Guide
7 réponses
NeoTsu
Messages postés
58
Date d'inscription
jeudi 6 juin 2013
Statut
Membre
Dernière intervention
19 juin 2013
3
7 juin 2013 à 13:49
7 juin 2013 à 13:49
Alors, ça marche, voila ce que j'ai fais:
feuille maintenance préventive :
H2: j'ai ajoué un "a", et j'ai ensuite changé la couleur du texte en blanc
H3: même manipulation
K1: j'ai entré la formule =nbval(H:H)
ensuite, j'a créé la macro suivante:
j'ai testé, ça fonctionne. attention tout de même, il ne faut pas renommer "feuil1", sinon ça ne marchera plus. si tu la renomme, il faut également changer ça dans le code VBA
De même sur "feuil1", il ne faut pas changer la ligne 2, elle serait sinon décalée vers le bas a chaque exécution de la macro
voila, dis moi si ça fonctionne, normalement c'est bon ^^
feuille maintenance préventive :
H2: j'ai ajoué un "a", et j'ai ensuite changé la couleur du texte en blanc
H3: même manipulation
K1: j'ai entré la formule =nbval(H:H)
ensuite, j'a créé la macro suivante:
Sub copie() Dim nbval As Long nbval = Sheets("maintenance préventive").Range("K1").Value For i = 5 To nbval If -10 < Sheets("maintenance préventive").Cells(i, 7).Value Then If Sheets("maintenance préventive").Cells(i, 7).Value < 10 Then Sheets("feuil1").Rows(2).Insert Sheets("feuil1").Cells(2, 1).Value = Sheets("maintenance préventive").Cells(i, 1).Value Sheets("feuil1").Cells(2, 2).Value = Sheets("maintenance préventive").Cells(i, 2).Value Sheets("feuil1").Cells(2, 3).Value = Sheets("maintenance préventive").Cells(i, 3).Value Sheets("feuil1").Cells(2, 4).Value = Sheets("maintenance préventive").Cells(i, 4).Value Sheets("feuil1").Cells(2, 5).Value = Sheets("maintenance préventive").Cells(i, 5).Value Sheets("feuil1").Cells(2, 6).Value = Sheets("maintenance préventive").Cells(i, 6).Value Sheets("feuil1").Cells(2, 7).Value = Sheets("maintenance préventive").Cells(i, 7).Value Sheets("feuil1").Cells(2, 8).Value = Sheets("maintenance préventive").Cells(i, 8).Value Sheets("feuil1").Cells(2, 9).Value = Sheets("maintenance préventive").Cells(i, 9).Value Else End If Else End If Next i End Sub
j'ai testé, ça fonctionne. attention tout de même, il ne faut pas renommer "feuil1", sinon ça ne marchera plus. si tu la renomme, il faut également changer ça dans le code VBA
De même sur "feuil1", il ne faut pas changer la ligne 2, elle serait sinon décalée vers le bas a chaque exécution de la macro
voila, dis moi si ça fonctionne, normalement c'est bon ^^
NeoTsu
Messages postés
58
Date d'inscription
jeudi 6 juin 2013
Statut
Membre
Dernière intervention
19 juin 2013
3
Modifié par NeoTsu le 7/06/2013 à 11:42
Modifié par NeoTsu le 7/06/2013 à 11:42
Bonjour,
Voila une solution possible :
dans un premier temps, pour faire simple, créé une cellules qui compte le nombre de lignes de ta feuille de données. fais attention à qu'il y ait bien des valeur dans les première ligne également (si les cellules sont vide, met y une lettre couleur blanche pour qu'elle ne se voit pas.). la formule de la cellule sera par exemple:
Ici on va dire que tu a mis cette formule en Z99
ensuite en ce qui concerne le VBA: (je prends ici dans l'exemple le cas ou les valeurs à copier sont à partir de la ligne 5, et que tu a sur la seconde feuille 1 ligne de "titres")
le problème que tu va rencontre, c'est seulement l'ordre des ligne, qui sera enfait l'exacte opposé de ton tableau d'origine. mais ça, tu peux le gerer par un tri ^^
Voila une solution possible :
dans un premier temps, pour faire simple, créé une cellules qui compte le nombre de lignes de ta feuille de données. fais attention à qu'il y ait bien des valeur dans les première ligne également (si les cellules sont vide, met y une lettre couleur blanche pour qu'elle ne se voit pas.). la formule de la cellule sera par exemple:
=nbval(A:A)
Ici on va dire que tu a mis cette formule en Z99
ensuite en ce qui concerne le VBA: (je prends ici dans l'exemple le cas ou les valeurs à copier sont à partir de la ligne 5, et que tu a sur la seconde feuille 1 ligne de "titres")
sub copie() dim nbval as long nbval = sheets("feuil1").range("Z99").value For i = 5 to nbval If -10<sheets("feuil1").cells(i,7).value<10 then sheets("feuil2").rows(2).insert sheets("feuil1").rows(i).copy sheets("feuil2").range("A2").paste Else End if Next i End Sub
le problème que tu va rencontre, c'est seulement l'ordre des ligne, qui sera enfait l'exacte opposé de ton tableau d'origine. mais ça, tu peux le gerer par un tri ^^
Roazak
Messages postés
15
Date d'inscription
mardi 4 juin 2013
Statut
Membre
Dernière intervention
22 novembre 2016
7 juin 2013 à 12:31
7 juin 2013 à 12:31
Bonjour
Tout d'abord merci d'avoir répondu si vite à ma question.
Quand j'exécute le programme ça ne marche pas et il me dit "Erreur d'exécution '438':Propriété ou méthode non-gérées par cette objet".
tout ce que j'ai changé dans le programme c'est l'emplacement de la cellule pour calculer le nombre de lignes (D2).
Je voulais demander qu'est-ce que ça veut dire cells (i,7) dans la 5ème ligne du programme.
Quand je fait F5 dans VBA pour tester la macro la première fois il me met le message d'erreur et il ne copie rien malgré quelques valeurs à copier et quand je clique une deuxième sur l'exécution de la macro, elle copie seulement la première ligne de mon tableau alors qu'elle n'est pas comprise dans la condition.
Tout d'abord merci d'avoir répondu si vite à ma question.
Quand j'exécute le programme ça ne marche pas et il me dit "Erreur d'exécution '438':Propriété ou méthode non-gérées par cette objet".
tout ce que j'ai changé dans le programme c'est l'emplacement de la cellule pour calculer le nombre de lignes (D2).
Je voulais demander qu'est-ce que ça veut dire cells (i,7) dans la 5ème ligne du programme.
Quand je fait F5 dans VBA pour tester la macro la première fois il me met le message d'erreur et il ne copie rien malgré quelques valeurs à copier et quand je clique une deuxième sur l'exécution de la macro, elle copie seulement la première ligne de mon tableau alors qu'elle n'est pas comprise dans la condition.
NeoTsu
Messages postés
58
Date d'inscription
jeudi 6 juin 2013
Statut
Membre
Dernière intervention
19 juin 2013
3
7 juin 2013 à 12:43
7 juin 2013 à 12:43
Hum, je n'ai jamais eu ce code erreur avant...
cells te permet d'aller cherche la cellule Gi, i étant une variable qui évolue au fil de la macro
si il n'est pas confidentiel, serait-il possible de mettre en ligne le fichier au format xlsm ? cela serait plus simple pour résoudre le problème.
cells te permet d'aller cherche la cellule Gi, i étant une variable qui évolue au fil de la macro
si il n'est pas confidentiel, serait-il possible de mettre en ligne le fichier au format xlsm ? cela serait plus simple pour résoudre le problème.
Roazak
Messages postés
15
Date d'inscription
mardi 4 juin 2013
Statut
Membre
Dernière intervention
22 novembre 2016
7 juin 2013 à 13:14
7 juin 2013 à 13:14
Désolé mais je suis nouveau sur CCM et je ne sais pas comment insérer un document. Pouvez-vous me dire comment faire et je vous donnerait volontier le document en question.
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
NeoTsu
Messages postés
58
Date d'inscription
jeudi 6 juin 2013
Statut
Membre
Dernière intervention
19 juin 2013
3
7 juin 2013 à 13:16
7 juin 2013 à 13:16
https://www.cjoint.com/
il suffit d'utiliser un site comme celui ci, et de copier coller le lien obtenu sur ce topic ^^
il suffit d'utiliser un site comme celui ci, et de copier coller le lien obtenu sur ce topic ^^
Roazak
Messages postés
15
Date d'inscription
mardi 4 juin 2013
Statut
Membre
Dernière intervention
22 novembre 2016
7 juin 2013 à 13:22
7 juin 2013 à 13:22
https://www.cjoint.com/?CFhnvs7KOd1
d'accord merci ça marche niquel
d'accord merci ça marche niquel
Roazak
Messages postés
15
Date d'inscription
mardi 4 juin 2013
Statut
Membre
Dernière intervention
22 novembre 2016
7 juin 2013 à 14:34
7 juin 2013 à 14:34
Juste pour t'embêter ;>
est-il possible de supprimer la feuil1 sauf la 1ère ligne avant le copier/coller pour éviter qu'il y ait deux fois les mêmes valeurs.
Sinon je pensait faire un bouton pour activer la macro mais ça je sais faire.
Merci beaucoup pour ton aide et tes réponses si rapides
est-il possible de supprimer la feuil1 sauf la 1ère ligne avant le copier/coller pour éviter qu'il y ait deux fois les mêmes valeurs.
Sinon je pensait faire un bouton pour activer la macro mais ça je sais faire.
Merci beaucoup pour ton aide et tes réponses si rapides
NeoTsu
Messages postés
58
Date d'inscription
jeudi 6 juin 2013
Statut
Membre
Dernière intervention
19 juin 2013
3
7 juin 2013 à 15:14
7 juin 2013 à 15:14
Oui, avec ça, ça devrait aller:
j'ai ajouté la ligne 4
j'ai prévu large, mais au moins ça te permettra de faire face à la plupart des possibilités. De plus, tu pourra mettre en forme ta feuil1(tableau, largeur etc...), ça ne les effacera pas.
pas de problème ;)
Sub copie() Dim nbval As Long nbval = Sheets("maintenance préventive").Range("K1").Value Sheets("feuil1").range("A2:I200").clearcontents For i = 5 To nbval If -10 < Sheets("maintenance préventive").Cells(i, 7).Value Then If Sheets("maintenance préventive").Cells(i, 7).Value < 10 Then Sheets("feuil1").Rows(2).Insert Sheets("feuil1").Cells(2, 1).Value = Sheets("maintenance préventive").Cells(i, 1).Value Sheets("feuil1").Cells(2, 2).Value = Sheets("maintenance préventive").Cells(i, 2).Value Sheets("feuil1").Cells(2, 3).Value = Sheets("maintenance préventive").Cells(i, 3).Value Sheets("feuil1").Cells(2, 4).Value = Sheets("maintenance préventive").Cells(i, 4).Value Sheets("feuil1").Cells(2, 5).Value = Sheets("maintenance préventive").Cells(i, 5).Value Sheets("feuil1").Cells(2, 6).Value = Sheets("maintenance préventive").Cells(i, 6).Value Sheets("feuil1").Cells(2, 7).Value = Sheets("maintenance préventive").Cells(i, 7).Value Sheets("feuil1").Cells(2, 8).Value = Sheets("maintenance préventive").Cells(i, 8).Value Sheets("feuil1").Cells(2, 9).Value = Sheets("maintenance préventive").Cells(i, 9).Value Else End If Else End If Next i End Sub
j'ai ajouté la ligne 4
j'ai prévu large, mais au moins ça te permettra de faire face à la plupart des possibilités. De plus, tu pourra mettre en forme ta feuil1(tableau, largeur etc...), ça ne les effacera pas.
pas de problème ;)