Aide pour une macro Excel 2007
Résolu/Fermé
chevalux1
coco_rico
- Messages postés
- 47
- Date d'inscription
- mercredi 18 février 2009
- Statut
- Membre
- Dernière intervention
- 9 juillet 2010
coco_rico
- Messages postés
- 32
- Date d'inscription
- mercredi 17 juin 2009
- Statut
- Membre
- Dernière intervention
- 19 juin 2009
A voir également:
- Aide pour une macro Excel 2007
- Macro excel 2007 - Conseils pratiques - Excel
- Macros - Comment les créer - Articles
- Désactiver sécurité macro Excel 2007 ✓ - Forum - Excel
- Macro excel 2007 - fichier source changeant ✓ - Forum - Excel
- Chimiste en détresse ! (macro excel 2007) ✓ - Forum - Excel
28 réponses
coco_rico
18 juin 2009 à 14:40
- Messages postés
- 32
- Date d'inscription
- mercredi 17 juin 2009
- Statut
- Membre
- Dernière intervention
- 19 juin 2009
18 juin 2009 à 14:40
Sub Comment_ca_marche()
dim i as integer, j as integer, k as integer
i=1
k=1
while i<10 'la macro va tourner sur 9 lignes
if cells(i,18)="P" and datediff("yyyy",cells(i,21),date)>1 and (cells(i,24)<>"" or datediff("yyyy",cells(i,24),date)>1) then
for j=1 to n 'n=nombre de colonnes concernées
sheets("nom_destination").cells(k,j)=sheets("nom_source").cells(i,j)
next j
k=k+1
endif
i=i+1
wend
end sub
Commentaires: tu peux modifier les conditions aux bornes ou la condition de fin de boucle "while" pour que ça corresponde à tes besoins.
bon courage
dim i as integer, j as integer, k as integer
i=1
k=1
while i<10 'la macro va tourner sur 9 lignes
if cells(i,18)="P" and datediff("yyyy",cells(i,21),date)>1 and (cells(i,24)<>"" or datediff("yyyy",cells(i,24),date)>1) then
for j=1 to n 'n=nombre de colonnes concernées
sheets("nom_destination").cells(k,j)=sheets("nom_source").cells(i,j)
next j
k=k+1
endif
i=i+1
wend
end sub
Commentaires: tu peux modifier les conditions aux bornes ou la condition de fin de boucle "while" pour que ça corresponde à tes besoins.
bon courage
chevalux1
18 juin 2009 à 15:35
- Messages postés
- 47
- Date d'inscription
- mercredi 18 février 2009
- Statut
- Membre
- Dernière intervention
- 9 juillet 2010
18 juin 2009 à 15:35
Je dois avouer que je n'y comprend pas grand chose!
Je pense avoir compris pour les bornes si j'ai 5000 jignes je met i<5000.
Par contre, à quoi correspondent "nom_destination" et "nom source"
Ou faut il aller pour inscrire cette macro?
Merci beaucoup pour votre aide!
Je pense avoir compris pour les bornes si j'ai 5000 jignes je met i<5000.
Par contre, à quoi correspondent "nom_destination" et "nom source"
Ou faut il aller pour inscrire cette macro?
Merci beaucoup pour votre aide!
coco_rico
18 juin 2009 à 15:37
- Messages postés
- 32
- Date d'inscription
- mercredi 17 juin 2009
- Statut
- Membre
- Dernière intervention
- 19 juin 2009
18 juin 2009 à 15:37
" " définit une chaine, en l'occurence ce sont les noms des feuilles source et destination dans ton classeur.
a+
a+
chevalux1
18 juin 2009 à 16:04
- Messages postés
- 47
- Date d'inscription
- mercredi 18 février 2009
- Statut
- Membre
- Dernière intervention
- 9 juillet 2010
18 juin 2009 à 16:04
J'ai mis ça :
Sub Comment_ca_marche()
Dim i As Integer, j As Integer, k As Integer
i = 1
k = 1
While i < 6000
If Cells(i, 18) = "P" And DateDiff("yyyy", Cells(i, 21), Date) > 1 And (Cells(i, 24) <> "" Or DateDiff("yyyy", Cells(i, 24), Date) > 1) Then
For j = 1 To 40
Sheets("Ponctuel à relancer").Cells(k, j) = Sheets("SAV").Cells(i, j)
Next j
k = k + 1
End If
i = i + 1
Wend
End Sub
Les lignes que je veux "copier" sont dans SAV et je veux les amené a Ponctuel à relancer. Je pense que c'est bon.
Mais apparament il a une erreur dans la formule car il me surligne en jaune les éléments que j'ai souligné (If Cells...Then).
Sub Comment_ca_marche()
Dim i As Integer, j As Integer, k As Integer
i = 1
k = 1
While i < 6000
If Cells(i, 18) = "P" And DateDiff("yyyy", Cells(i, 21), Date) > 1 And (Cells(i, 24) <> "" Or DateDiff("yyyy", Cells(i, 24), Date) > 1) Then
For j = 1 To 40
Sheets("Ponctuel à relancer").Cells(k, j) = Sheets("SAV").Cells(i, j)
Next j
k = k + 1
End If
i = i + 1
Wend
End Sub
Les lignes que je veux "copier" sont dans SAV et je veux les amené a Ponctuel à relancer. Je pense que c'est bon.
Mais apparament il a une erreur dans la formule car il me surligne en jaune les éléments que j'ai souligné (If Cells...Then).
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
coco_rico
18 juin 2009 à 16:18
- Messages postés
- 32
- Date d'inscription
- mercredi 17 juin 2009
- Statut
- Membre
- Dernière intervention
- 19 juin 2009
18 juin 2009 à 16:18
quel est le message d'erreur?
chevalux1
19 juin 2009 à 08:14
- Messages postés
- 47
- Date d'inscription
- mercredi 18 février 2009
- Statut
- Membre
- Dernière intervention
- 9 juillet 2010
19 juin 2009 à 08:14
Le message d'esrreur est:
Erreur d'execution '13' : Imcompatibilité de type
Erreur d'execution '13' : Imcompatibilité de type
coco_rico
19 juin 2009 à 09:29
- Messages postés
- 32
- Date d'inscription
- mercredi 17 juin 2009
- Statut
- Membre
- Dernière intervention
- 19 juin 2009
19 juin 2009 à 09:29
slt,
dans les colonnes où l'on attend les dates, il y a des valeurs non numériques, regarde ou corrige le programme, tu sais le faire?
dans les colonnes où l'on attend les dates, il y a des valeurs non numériques, regarde ou corrige le programme, tu sais le faire?
chevalux1
19 juin 2009 à 09:47
- Messages postés
- 47
- Date d'inscription
- mercredi 18 février 2009
- Statut
- Membre
- Dernière intervention
- 9 juillet 2010
19 juin 2009 à 09:47
Il n'y a pourtant que des dates, mise à part la premiere ligne qui correspond à l'intitulé de la colonne.
coco_rico
19 juin 2009 à 10:34
- Messages postés
- 32
- Date d'inscription
- mercredi 17 juin 2009
- Statut
- Membre
- Dernière intervention
- 19 juin 2009
19 juin 2009 à 10:34
slt,
quand l'erreur survient, demande à déboguer, il t'emmènera dans la fenêtre VBA, fais successivement "Débogage\Ajouter espion" pour i, cells(i,21), cells(i,24) on doit pouvoir fixer la raison après, ok?
quand l'erreur survient, demande à déboguer, il t'emmènera dans la fenêtre VBA, fais successivement "Débogage\Ajouter espion" pour i, cells(i,21), cells(i,24) on doit pouvoir fixer la raison après, ok?
chevalux1
19 juin 2009 à 10:42
- Messages postés
- 47
- Date d'inscription
- mercredi 18 février 2009
- Statut
- Membre
- Dernière intervention
- 9 juillet 2010
19 juin 2009 à 10:42
J'ai mis i, cells(i,21), cells(i,24) dans Expression
Ensuite la procédure ioment_ca_marche
et dans module Module 1
Il y a un message d'erreur qui dit que L'expression espionne est incorrecte
Merci encore pour ton aide!
Ensuite la procédure ioment_ca_marche
et dans module Module 1
Il y a un message d'erreur qui dit que L'expression espionne est incorrecte
Merci encore pour ton aide!
coco_rico
19 juin 2009 à 10:56
- Messages postés
- 32
- Date d'inscription
- mercredi 17 juin 2009
- Statut
- Membre
- Dernière intervention
- 19 juin 2009
19 juin 2009 à 10:56
il faut faire la manip successivement pour chaque expression i, puis cells(i,21) puis cells(i,24)
chevalux1
19 juin 2009 à 11:11
- Messages postés
- 47
- Date d'inscription
- mercredi 18 février 2009
- Statut
- Membre
- Dernière intervention
- 9 juillet 2010
19 juin 2009 à 11:11
Ok c'est fait.
Il m'indique bien le nom des colonnes que je veux dans Valeur (i = 1 ; Cells(i, 21) = visité le et Cells(i, 24) = CE proposé le)
Que dois je faire ensuite?
Il m'indique bien le nom des colonnes que je veux dans Valeur (i = 1 ; Cells(i, 21) = visité le et Cells(i, 24) = CE proposé le)
Que dois je faire ensuite?
coco_rico
19 juin 2009 à 11:15
- Messages postés
- 32
- Date d'inscription
- mercredi 17 juin 2009
- Statut
- Membre
- Dernière intervention
- 19 juin 2009
19 juin 2009 à 11:15
mais alors dans la 21ième (U) et dans la 24ième (X) colonne, ce ne sont pas des dates comme t'avais mentionné dans ta question d'origine?
coco_rico
19 juin 2009 à 11:21
- Messages postés
- 32
- Date d'inscription
- mercredi 17 juin 2009
- Statut
- Membre
- Dernière intervention
- 19 juin 2009
19 juin 2009 à 11:21
ah, non, je me suis planté, j'ai oublié que t'avais une ligne de titre aussi !!!! autant pour moi, fais partir à partir de i=2 et là, ça devrait marcher ....
chevalux1
19 juin 2009 à 11:24
- Messages postés
- 47
- Date d'inscription
- mercredi 18 février 2009
- Statut
- Membre
- Dernière intervention
- 9 juillet 2010
19 juin 2009 à 11:24
Peux tu me dire comment on fait ça stp?
coco_rico
19 juin 2009 à 11:27
- Messages postés
- 32
- Date d'inscription
- mercredi 17 juin 2009
- Statut
- Membre
- Dernière intervention
- 19 juin 2009
19 juin 2009 à 11:27
dans la macro, avant le while, t'as i=1, change en i=2. et attention, pour j aussi, si dans ta feuille de destination t'as une ligne de titre, il faut faire "For j=2 to 40". J'espère que ça va marcher cette fois-ci.
chevalux1
19 juin 2009 à 11:28
- Messages postés
- 47
- Date d'inscription
- mercredi 18 février 2009
- Statut
- Membre
- Dernière intervention
- 9 juillet 2010
19 juin 2009 à 11:28
j'ai mis i = 2 et j'ai le meme message d'erreur
coco_rico
19 juin 2009 à 11:31
- Messages postés
- 32
- Date d'inscription
- mercredi 17 juin 2009
- Statut
- Membre
- Dernière intervention
- 19 juin 2009
19 juin 2009 à 11:31
dans la colonne U, la date est-elle toujours renseignée? (j'ai considéré que si)
chevalux1
19 juin 2009 à 11:39
- Messages postés
- 47
- Date d'inscription
- mercredi 18 février 2009
- Statut
- Membre
- Dernière intervention
- 9 juillet 2010
19 juin 2009 à 11:39
Apparament ça marche mais seulement dans le cas ou la cellule de la colonne U est vide mais pas quand la date est supérieur à 1 ans.
C'est déjà un début!
Est ce que ça peut venir du format de la date (14/01/2008)?
C'est déjà un début!
Est ce que ça peut venir du format de la date (14/01/2008)?
chevalux1
19 juin 2009 à 11:46
- Messages postés
- 47
- Date d'inscription
- mercredi 18 février 2009
- Statut
- Membre
- Dernière intervention
- 9 juillet 2010
19 juin 2009 à 11:46
Jai juste fait un essai en effaçant une date mais toutes les cellules étaient renseignées à la base.
Par contre c'est vrai que par la suite, elles ne seront pas forcément toutes renseignées.
Par contre c'est vrai que par la suite, elles ne seront pas forcément toutes renseignées.