Précédent   Forum des professionnels en informatique > Logiciels > Microsoft Office > Excel > Macros et VBA Excel
Macros et VBA Excel Vos questions relatives aux macros Excel, à l'utilisation de VBA et à l'automatisation de vos classeurs Excel.
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
Vieux 02/07/2009, 17h00   #1
Invité de passage
 
Inscription : juillet 2009
Messages : 7
Détails du profil
Informations forums :
Inscription : juillet 2009
Messages : 7
Points : 0
Points : 0
Par défaut Faire une macro

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??
lemargoullia est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 02/07/2009, 17h17   #2
Membre Expert
 
Avatar de laetitia
 
Inscription : décembre 2002
Messages : 1 281
Détails du profil
Informations personnelles :
Âge : 21

Informations forums :
Inscription : décembre 2002
Messages : 1 281
Points : 1 363
Points : 1 363
bonjour lemargoullia le forum si tu pouvez nous mettre un petit zip avec le resultat attendu sur feuille2 comment cela pas simple!!
__________________
SALUTATIONS
laetitia est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 03/07/2009, 11h46   #3
Invité de passage
 
Inscription : juillet 2009
Messages : 7
Détails du profil
Informations forums :
Inscription : juillet 2009
Messages : 7
Points : 0
Points : 0


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...
Images attachées
Type de fichier : jpg tableau.jpg (13,3 Ko, 27 affichages)
lemargoullia est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 03/07/2009, 11h51   #4
Membre Expert
 
Avatar de Krovax
 
Inscription : juillet 2008
Messages : 1 889
Détails du profil
Informations personnelles :
Âge : 26

Informations forums :
Inscription : juillet 2008
Messages : 1 889
Points : 1 937
Points : 1 937
Citation:
Pour une cellule ça va, mais lorqu'il ya plusieurs cellules...
Hé bien boucle sur les cellule
Code :
1
2
3
4
5
 
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
Ou alors
Code :
1
2
3
4
5
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
Sinon tu peux aussi nous donne ton code qui fonctionne pour une cellule et on essaye ensemble de l'adapter a une plage

Dernière modification par AlainTech ; 12/07/2009 à 11h31. Motif: Balises [quote], pas code
Krovax est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 03/07/2009, 14h22   #5
Invité de passage
 
Inscription : juillet 2009
Messages : 7
Détails du profil
Informations forums :
Inscription : juillet 2009
Messages : 7
Points : 0
Points : 0
Citation:
Sinon tu peux aussi nous donne ton code qui fonctionne pour une cellule et on essaye ensemble de l'adapter a une plage
Je veux bien, mais je préviens je suis un novice de chez novice...

pour l'instant j'ai réussi à faire ça :

Code :
1
2
3
4
5
6
7
8
9
If Range("E14") = 1 Then
    Range("D14").Select
    Selection.Copy
    Sheets("Feuil1").Select
    Range("A4").Select
    ActiveSheet.Paste
 
 
End If
C'est pas super, mais ça marche pour une case, je vais essayer ton code et on verra

Dernière modification par AlainTech ; 12/07/2009 à 11h32.
lemargoullia est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 06/07/2009, 10h17   #6
Invité de passage
 
Inscription : juillet 2009
Messages : 7
Détails du profil
Informations forums :
Inscription : juillet 2009
Messages : 7
Points : 0
Points : 0
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.?
lemargoullia est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 06/07/2009, 10h24   #7
Membre Expert
 
Avatar de aalex_38
 
Inscription : septembre 2007
Messages : 1 570
Détails du profil
Informations forums :
Inscription : septembre 2007
Messages : 1 570
Points : 1 709
Points : 1 709
Citation:
Bon j'ai éssayé le code... sans grand succés
Et si tu montrais le code que tu as essayé de faire ?

Ton problème est sur l'utilisation de select case ?
__________________
aalex_38 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 06/07/2009, 10h30   #8
Invité de passage
 
Inscription : juillet 2009
Messages : 7
Détails du profil
Informations forums :
Inscription : juillet 2009
Messages : 7
Points : 0
Points : 0
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 :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
 
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
mais ce code ne marche pas (évidement)
je sais pas quoi mettre après cel

Dernière modification par AlainTech ; 12/07/2009 à 11h34. Motif: Fusion de 2 messages
lemargoullia est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 06/07/2009, 10h54   #9
Membre Expert
 
Avatar de Krovax
 
Inscription : juillet 2008
Messages : 1 889
Détails du profil
Informations personnelles :
Âge : 26

Informations forums :
Inscription : juillet 2008
Messages : 1 889
Points : 1 937
Points : 1 937
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
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
Bon après les select c'est tour pouris alors on les enlève

Code :
1
2
3
4
5
6
7
8
9
10
11
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
Attention cel est une variable qui représente une des cellule de la plage (tu l'utilise comme range("uneddress") ) et n'a rien a voir avec cells qui est un mot réservé cells(i,j) est la cellule ligne i colonne j

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
Krovax est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 06/07/2009, 11h38   #10
Invité de passage
 
Inscription : juillet 2009
Messages : 7
Détails du profil
Informations forums :
Inscription : juillet 2009
Messages : 7
Points : 0
Points : 0
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 :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
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
Sauf que rien n'apparait sur l'autre feuille, apparement je ne copie pas les écritures
Images attachées
Type de fichier : jpg tableau.jpg (43,1 Ko, 14 affichages)
lemargoullia est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 06/07/2009, 11h44   #11
Membre Expert
 
Avatar de Krovax
 
Inscription : juillet 2008
Messages : 1 889
Détails du profil
Informations personnelles :
Âge : 26

Informations forums :
Inscription : juillet 2008
Messages : 1 889
Points : 1 937
Points : 1 937
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 metet met un offset d'un colonne a droite pour le teste en if
Krovax est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 06/07/2009, 11h53   #12
Invité de passage
 
Inscription : juillet 2009
Messages : 7
Détails du profil
Informations forums :
Inscription : juillet 2009
Messages : 7
Points : 0
Points : 0
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
lemargoullia est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 06/07/2009, 12h00   #13
Membre Expert
 
Avatar de Krovax
 
Inscription : juillet 2008
Messages : 1 889
Détails du profil
Informations personnelles :
Âge : 26

Informations forums :
Inscription : juillet 2008
Messages : 1 889
Points : 1 937
Points : 1 937
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
Krovax est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +1. Il est actuellement 04h48.


 
 
 
 
Partenaires

Hébergement Web