freshyback
Messages postés34Date d'inscriptionjeudi 19 juillet 2007StatutMembreDernière intervention16 mars 2008
-
8 févr. 2008 à 17:36
cs_MPi
Messages postés3877Date d'inscriptionmardi 19 mars 2002StatutMembreDernière intervention17 août 2018
-
15 févr. 2008 à 22:26
Bonjour tout le monde,
voila j'ai un gros souci
Je débute un peu en VB donc jaimerais beaucoup votre aide
En fait j'ia un fichier excel qui a 2 tableaux sur la même feuille
dans le premier on a 10 colonnes on la première est la colonne Tuteur
Dans le deuxième tableau j'ai une seule colonne qui regoupr les nom de tout les responsables.
Le but est de définir une macro qui va permettre de parcourir le premier tableau sur la colonne Tuteur et verifier que ce nom n'existe pas ds le deuxième tableau et donc si le nom n'existe pas on crée une nouvelle feuille ("New Tuteur") et on copie la ligne entière concernée ( donc les 10 cellules ) du premier tableau dans cette nouvelle feuille et ainsi de suite jusqu'a fin de parcours du tableau 1.
cs_MPi
Messages postés3877Date d'inscriptionmardi 19 mars 2002StatutMembreDernière intervention17 août 201823 14 févr. 2008 à 11:17
Tu écris ceci
If Sheets("LISTE").Range("A" & i).Value <> Sheets("LISTE").Range("AB" & i).Value Then
Range("A" & i & ":W" & i).Copy 'éviter les Select
Sheets("Restant").Range("A" & i).PasteSpecial
Es-tu certain de copier les données de la bonne feuille ?
Peut-être qu'il manque le Sheets("LISTE") ?
If Sheets("LISTE").Range("A" & i).Value <> Sheets("LISTE").Range("AB" & i).Value Then
Sheets("LISTE"). Range("A" & i & ":W" & i).Copy 'éviter les Select
Sheets("Restant").Range("A" & i).PasteSpecial
PS: tu ne peux pas joindre de fichier ici sur le site... mais tu peux utiliser un autre site dédié à ce genre de chose.
MPi²
Pour ceux qui programment sous Office, n'oubliez pas qu'il existe un forum dédié à ces applications VBA....... ICI
cs_MPi
Messages postés3877Date d'inscriptionmardi 19 mars 2002StatutMembreDernière intervention17 août 201823 15 févr. 2008 à 11:35
= ou <>
sont à peu de chose près identiques dans le comportement ...
Es-tu certain que les 2 valeurs A et AB sont absolument identiques, comme dans ton exemple avec Matias Tagueule ?
S'il y a un espace en trop ou une majuscule versus une minuscule, les 2 valeurs ne seront pas identiques donc copiées... Il faudra alors user d'astuce.
MPi²
Pour ceux qui programment sous Office, n'oubliez pas qu'il existe un forum dédié à ces applications VBA....... ICI
cs_MPi
Messages postés3877Date d'inscriptionmardi 19 mars 2002StatutMembreDernière intervention17 août 201823 9 févr. 2008 à 15:18
Bienvenue à toi.
Comme tu es nouveau, je t'inviterais à lire les règlements du site...
(Je sens que je me répète, là... )
Donc, on ne demande pas de code tout fait...
Si tu as un problème particulier, donne-nous le code où ça coince. S'il y a un message d'erreur, donne-nous son numéro et description pour faciliter la tâche. Et pose des questions claires et précises sur UN problème que tu rencontres.
MPi²
Pour ceux qui programment sous Office, n'oubliez pas qu'il existe un forum dédié à ces applications VBA....... ICI
freshyback
Messages postés34Date d'inscriptionjeudi 19 juillet 2007StatutMembreDernière intervention16 mars 2008 13 févr. 2008 à 14:29
Le detail de mon code est le suivant
Dim val1 As Range
Dim val2 As Range
Dim i As Integer
For i = 3 To 5000
'Set val1 = Sheets("LISTE").Range("AB3" & i)
'Set val2 = Sheets("LISTE").Range("A3" & i)
If Sheets("LISTE").Range("A" & i).Value <> Sheets("LISTE").Range("AB" & i).Value Then
cs_MPi
Messages postés3877Date d'inscriptionmardi 19 mars 2002StatutMembreDernière intervention17 août 201823 13 févr. 2008 à 23:21
Ce bout de code devrait être modifié
<strike>Range("A &i:W &i").Select</strike>
pour
Range("A" & i & ":W" & i).Copy 'évite les Select
Sheets("Restant").Range("A" & i).PasteSpecial
MPi²
Pour ceux qui programment sous Office, n'oubliez pas qu'il existe un forum dédié à ces applications VBA....... ICI
freshyback
Messages postés34Date d'inscriptionjeudi 19 juillet 2007StatutMembreDernière intervention16 mars 2008 14 févr. 2008 à 09:54
Merci MPi² pour ta réponse
En fait çà se passe un peu mieux pendant l'excution
Mais j'ai de nouveau un message d'erreur sur la partie en italique : Err 13 incompatibilité de type
En fait je souhaite copier uniquement les ligne dont les valeurs de la colonne A ne sont par présentes dans la colonne AB
Et pour l'instant il a l'air de faire quasi le contraire
Dim val1 As Range
Dim val2 As Range
Dim i As Integer
For i = 3 To 5000
Set val1 = Sheets("LISTE").Range("AB3" & i)
Set val2 = Sheets("LISTE").Range("A3" & i)
If Sheets("LISTE").Range("A" & i).Value <> Sheets("LISTE").Range("AB" & i).Value Then
Range("A" & i & ":W" & i).Copy 'éviter les Select
Sheets("Restant").Range("A" & i).PasteSpecial
cs_MPi
Messages postés3877Date d'inscriptionmardi 19 mars 2002StatutMembreDernière intervention17 août 201823 14 févr. 2008 à 10:21
Lorsque tu cliques le bouton "déboguage" du message d'erreur, la ligne en problème apparaît en jaune. À ce moment, passe ta souris au-dessus de la variable i
Tu verras sa valeur, donc la ligne à problème.
Vérifie alors les valeurs des 2 cellules A et AB sur cette ligne. Il se peut qu'une soit un nombre et l'autre du texte...(?) À toi de réagir en conséquence.
Ce que tu peux faire pour la comparaison, c'est de "caster" le type de valeurs que tu veux comparer.
ex:
If CStr(Sheets("LISTE").Range("A" & i).Value) <> CStr(Sheets("LISTE").Range("AB" & i).Value) Then
En utilisant CStr(), tu fais une comparaison sur la valeur textuelle des cellules et ça permet souvent d'éviter ce genre d'erreur. Si ça ne règle pas le problème, donne-nous la valeur des 2 cellules qui sont comparées lorsque ça plante. Ça pourrait aider.
MPi²
Pour ceux qui programment sous Office, n'oubliez pas qu'il existe un forum dédié à ces applications VBA....... ICI
freshyback
Messages postés34Date d'inscriptionjeudi 19 juillet 2007StatutMembreDernière intervention16 mars 2008 14 févr. 2008 à 10:41
Apparemmet il execute le code sans renvoyer de message d'erreur
Mais il me renvoi toujours la totalité des lignes y compris celles pour lesquelles la valeur dans A est égale à celle qui est dans AB
cs_MPi
Messages postés3877Date d'inscriptionmardi 19 mars 2002StatutMembreDernière intervention17 août 201823 14 févr. 2008 à 22:57
Je pense que je comprends un peu mieux... enfin, je pense...
Tu dis que tu as Donald en colonne A, disons, et tu dis que tu as le nom et prénom en AB.Donc, si A Donald et AB Donald Freshyback, la comparaison ne pourra pas être faite avec un "="
Il faudrait que tu utilises Instr() pour retracer le prénom dans AB.
Mais là il y a un problème s'il y a différents Donald.
À ce moment-là, il te faut comparer le prénom en A plus le nom en B (ou autre)
Ne sachant pas ce qu'il y a dans tes colonnes, je ne peux aller plus loin...
MPi²
Pour ceux qui programment sous Office, n'oubliez pas qu'il existe un forum dédié à ces applications VBA....... ICI
freshyback
Messages postés34Date d'inscriptionjeudi 19 juillet 2007StatutMembreDernière intervention16 mars 2008 15 févr. 2008 à 09:59
En fait je ne fait fait de comparaison de nom et prénom
C'est juste j'ai une liste de tuteur mettons avec leur nom et prénom danss AB
et j'ai de A à W leur détail d'action avec en colonne A leur nom et prénom
Par contre dans A j'ai des nom qui ne sont pas dans la liste AB
Donc pour ceux là je copier la ligne de l'action que je reporte dans une autre feuille
exemple :
col A col B ........col W col AB
Donald freshyback cours1.......présent Liste
Matias Tagueule cours B.....présent Matias Tagueule
Jules Mytho coursC......Absent Donald fresyback
donc en comparaison les noms dans A et ceux de AB
On va recopier uniquement toute la ligne de Jules Mytho de A à W dans la feuille "Restant" et ainsi de suite
Peut suis-je un peu plus clair?
Merci de ton aide!!