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
 
Date d'inscription: juillet 2009
Messages: 7
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
Vieux 02/07/2009, 17h17   #2
Membre Expert
 
Avatar de laetitia
 
Date d'inscription: décembre 2002
Localisation: 38
Âge: 20
Messages: 1 163
Par défaut

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
Vieux 03/07/2009, 11h46   #3
Invité de passage
 
Date d'inscription: juillet 2009
Messages: 7
Par défaut



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, 26 affichages)
lemargoullia est déconnecté   Envoyer un message privé Réponse avec citation
Vieux 03/07/2009, 11h51   #4
Expert Confirmé
 
Avatar de Krovax
 
Date d'inscription: juillet 2008
Localisation: Elsass
Âge: 24
Messages: 1 887
Par défaut

Citation:
Pour une cellule ça va, mais lorqu'il ya plusieurs cellules...
Hé bien boucle sur les cellule
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
Ou alors
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
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
Vieux 03/07/2009, 14h22   #5
Invité de passage
 
Date d'inscription: juillet 2009
Messages: 7
Par défaut

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 :
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
Vieux 06/07/2009, 10h17   #6
Invité de passage
 
Date d'inscription: juillet 2009
Messages: 7
Par défaut

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
Vieux 06/07/2009, 10h24   #7
Membre Expert
 
Avatar de aalex_38
 
Date d'inscription: septembre 2007
Messages: 1 455
Par défaut

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
Vieux 06/07/2009, 10h30   #8
Invité de passage
 
Date d'inscription: juillet 2009
Messages: 7
Par défaut

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
 
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
Vieux 06/07/2009, 10h54   #9
Expert Confirmé
 
Avatar de Krovax
 
Date d'inscription: juillet 2008
Localisation: Elsass
Âge: 24
Messages: 1 887
Par défaut

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
Bon après les select c'est tour pouris alors on les enlève

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
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
Vieux 06/07/2009, 11h38   #10
Invité de passage
 
Date d'inscription: juillet 2009
Messages: 7
Par défaut

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
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, 13 affichages)
lemargoullia est déconnecté   Envoyer un message privé Réponse avec citation
Vieux 06/07/2009, 11h44   #11
Expert Confirmé
 
Avatar de Krovax
 
Date d'inscription: juillet 2008
Localisation: Elsass
Âge: 24
Messages: 1 887
Par défaut

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")
met
Code :
 Range("D14:D19")
et 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
Vieux 06/07/2009, 11h53   #12
Invité de passage
 
Date d'inscription: juillet 2009
Messages: 7
Par défaut

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
Vieux 06/07/2009, 12h00   #13
Expert Confirmé
 
Avatar de Krovax
 
Date d'inscription: juillet 2008
Localisation: Elsass
Âge: 24
Messages: 1 887
Par défaut

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
NEWS EXCELF.A.Q EXCELTUTORIELS EXCELSOURCES EXCELOUTILS EXCELLIVRES EXCELOFFICE 2010

Réponse Proposer ce sujet en actualité

Précédent   Forum des professionnels en informatique > Logiciels > Microsoft Office > Excel > Macros et VBA Excel



Outils de la discussion

Règles de messages
Vous ne pouvez pas créer de nouvelles discussions
Vous ne pouvez pas envoyer des réponses
Vous ne pouvez pas envoyer des pièces jointes
Vous ne pouvez pas modifier vos messages

Les balises BB sont activées : oui
Les smileys sont activés : oui
La balise [IMG] est activée : oui
Le code HTML peut être employé : non
Trackbacks are non
Pingbacks are non
Refbacks are non



Fuseau horaire GMT +1. Il est actuellement 22h31.


Vos questions techniques : forum d'entraide Excel - Publiez vos articles, tutoriels et cours
et rejoignez-nous dans l'équipe de rédaction du club d'entraide des développeurs francophones
Nous contacter - Hébergement - Participez - Copyright © 2000-2010 www.developpez.com - Legal informations.