|
Publicité | ||||||||||||||||||||||
|
|
#1 |
|
Invité de passage
![]() Date d'inscription: juillet 2009
Messages: 7
|
Bonjour,
Je dois faire une macro sous excel et je suis un débutant je vous explique mon travail : j'ai un tableau avec 6 lignes et 4 colonnes dans la 1ère colonne il y a l'intitulé du critère et dans les 3 autres on doit mettre une note entre 1 et 0. le but est de copier dans une autre feuille excel l'intitulé du critère qui a une note 1 J'ai réussi à le faire pour une case avec la fonction "If" mais lorqu'il faut le faire sur une plage de cellule, là je câle pouvez-vous m'aider?? |
|
|
|
|
|
#2 |
|
Membre Expert
![]() Date d'inscription: décembre 2002
Localisation: 38
Âge: 20
Messages: 1 163
|
bonjour lemargoullia le forum si tu pouvez nous mettre un petit zip avec le resultat attendu sur feuille2 comment cela pas simple!!
__________________
SALUTATIONS
|
|
|
|
|
|
#3 |
|
Invité de passage
![]() Date d'inscription: juillet 2009
Messages: 7
|
![]() Voilà le tableau Lorsqu'il y a un 1 dans la 2ème colonne je dois copier l'intitulé sur une autre feuille excel Par exemple dans le tableau ci dessus : ervolution du chiffre d'affaire; evolution de la taille d'entreprise, etc... Pour une cellule ça va, mais lorqu'il ya plusieurs cellules... |
|
|
|
|
|
#4 | |
|
Expert Confirmé
![]() Date d'inscription: juillet 2008
Localisation: Elsass
Âge: 24
Messages: 1 887
|
Citation:
Code :
dim cel as range for each cel in range ("A2:A20") 'remplace "A2:A20" par la plage que tu veux tester 'le code en utilisant cel next cel Code :
dim i as long, DerniereLigne = Range("A65536").End(xlUp).Row as long DerniereLigne = Range("A65536").End(xlUp).Row for i = 2 to DerniereLigne = Range("A65536").End(xlUp).Row 'ton code en utilisant cells(i,1) net i Dernière modification par AlainTech ; 12/07/2009 à 11h31. Motif: Balises [quote], pas code |
|
|
|
|
|
|
#5 | |
|
Invité de passage
![]() Date d'inscription: juillet 2009
Messages: 7
|
Citation:
pour l'instant j'ai réussi à faire ça : Code :
If Range("E14") = 1 Then Range("D14").Select Selection.Copy Sheets("Feuil1").Select Range("A4").Select ActiveSheet.Paste End If Dernière modification par AlainTech ; 12/07/2009 à 11h32. |
|
|
|
|
|
|
#6 |
|
Invité de passage
![]() Date d'inscription: juillet 2009
Messages: 7
|
Bon j'ai éssayé le code... sans grand succés
je bloque sur la condition à mettre : si il y a 1 dans cette case, donc copier la case ex: si il y a 1 pour "evolution du Ca", copier "evolutiondu CA" Il faut mettre un lien entreles 2 cases.? |
|
|
|
|
|
#7 | |
|
Membre Expert
![]() Date d'inscription: septembre 2007
Messages: 1 455
|
Citation:
Ton problème est sur l'utilisation de select case ?
__________________
|
|
|
|
|
|
|
#8 |
|
Invité de passage
![]() Date d'inscription: juillet 2009
Messages: 7
|
oui c'est ça mon problème...
Mon code est le même que celui que j'ai fait précédement mais je n'arrive pas à l'appliquer sur plusieurs cases: Code :
Sub Macro1() ' ' Macro1 Macro ' test ' ' Touche de raccourci du clavier: Ctrl+r Dim cel As Range For Each cel In Range("E14:E19") If cel(1, 2) = 1 Then Range("D14").Select Selection.Copy Sheets("Feuil1").Select Range("A4").Select ActiveSheet.Paste End If Next cel End Sub je sais pas quoi mettre après cel Dernière modification par AlainTech ; 12/07/2009 à 11h34. Motif: Fusion de 2 messages |
|
|
|
|
|
#9 |
|
Expert Confirmé
![]() Date d'inscription: juillet 2008
Localisation: Elsass
Âge: 24
Messages: 1 887
|
Code :
Dim cel As Range dim i as integer i=4 For Each cel In Range("E14:E19") If cel(1, 2) = 1 Then cel .Select cel .Copy Sheets("Feuil1").Select Range("A"& i).Select ActiveSheet.Paste i=i+1 End If Next cel End Sub Code :
Dim cel As Range dim i as integer i=4 For Each cel In Range("E14:E19") If cells(1, 2) = 1 Then 'je ne sais pas ce que tu veux tester ici cel.Copy Sheets("Feuil1").Range("A"& i).ActiveSheet.Paste i=i+1 End If Next cel End Sub edit pour ton test utilise cel.Offset(i,j) c'est la cellule i ligne en bas j ligne a gauche de la cellule actuellement testé (pour monter ou aller a gauche il suffit de mettre un nombre négatif) Exemple si la note et colonne G sur la meme ligne que l'intitulé Code :
If cel.offset(0,2) = 1 Then |
|
|
|
|
|
#10 |
|
Invité de passage
![]() Date d'inscription: juillet 2009
Messages: 7
|
Je suis navré mais ça fonctionne pas...je suis vraiment un boulet... et j'y connait rien!!
Je reprends depuis le début : ![]() Lorsque 1 apparait dans la case E14, je dois copier la case D14, dans une autre feuille du classeur et ainsi de suite pour toute les autres cases de E14 à E19 le code que j'utilise : Code :
Sub Macro1() ' ' Macro1 Macro ' test ' ' Touche de raccourci du clavier: Ctrl+r Dim cel As Range Dim i As Integer i = 4 For Each cel In Range("E14:E19") If cel(14, E).Value = 1 Then If cel.Offset(14, E) = 1 Then cel.Offset(14, E).Copy Sheets("Feuil1").Range("A" & i).ActiveSheet.Paste i = i + 1 End If End If Next cel End Sub |
|
|
|
|
|
#11 |
|
Expert Confirmé
![]() Date d'inscription: juillet 2008
Localisation: Elsass
Âge: 24
Messages: 1 887
|
Il me semblais avoir dit que cel et cells été deux chose TOTALEMENT différentes
Pourquoi continue tu as utiliser cel(14, E) de plus E n'a aucune valeur (et oui E est une variable pas un intitulé de colonne si tu veux la ligne 14 de la colonne E c'est cells(14,5) ) De plus cel.offset(14, E) décalé de 14 ligne et E colonne (ici E vau 0 puisque c'est une variable) Cel est une cellule de la plage Range("E14:E19") Pa besoin de dire quoi que ce soit de plus dessus Si tu essayé le code que je t'ai donnée sans le bidouiller dans tous les sens en ne tenant pas compte des commentaire Visiblement c'est dans la case D que tu veu copier alors au lieu de Code :
Range("E14:E19") Code :
Range("D14:D19") |
|
|
|
|
|
#12 |
|
Invité de passage
![]() Date d'inscription: juillet 2009
Messages: 7
|
C'est bon laisse tomber, j'ai préciseé que j'y connaissais rien...
je comprends rien à votre language je demanderais de l'aide ailleurs merci |
|
|
|
|
|
#13 |
|
Expert Confirmé
![]() Date d'inscription: juillet 2008
Localisation: Elsass
Âge: 24
Messages: 1 887
|
Tu as un code tout fait 2 lignes a modifié, et le code fonctionne, c'est vrai que je n'ai pas été super poile et rigolo mais je ne pense pas avoir été insultant non plus, tout ce que je demande c'est de lire les commentaire et d'y mettre un peu du siens (le deuxième points été pas trop mal d'ailleur).
Après libre a toi de te vexer et de continuer à galérer |
|
|
|
|
|
![]() |
||
[XL-2007] Faire une macro
|
||
| Outils de la discussion | |
|
|