cedana
Messages postés12Date d'inscriptionjeudi 3 juin 2010StatutMembreDernière intervention18 octobre 2013
-
23 août 2010 à 19:59
cs_Jack
Messages postés14006Date d'inscriptionsamedi 29 décembre 2001StatutModérateurDernière intervention28 août 2015
-
24 août 2010 à 13:00
Bonjour à tous.
Voici le sujet. je souhaite q'une partie des données saisies dans le classeur1 soient recopiées simultanément dans le classeur2 et sous conditions. Je vais essayer d'être clair.
Les données dans les colonnes A,B,C,D,E et F du classeur1 sont à recopiées respectivement dans les col A,C,D,F et E du classeur2 et à condition que les valeurs col "C" du classeur1 soient <> "Esp". Donc si valeur = "Esp" pas de recopie dans classeur2. Les plages de saisies s'etendent de la ligne 7 à 85. Le code suivant fonctionne mais il recopie toutes les données, alors je vous demande un peu d'aide. Merci d'avance.
Private Sub Worksheet_Change(ByVal Target As Range)
Dim plage As Range
Set plage = Range("D" & Target.Row)
If Not Intersect(Target, Columns("D:D")) Is Nothing Then
If plage.Value >7000 And plage.Value < 8000 Then plage.Font.ColorIndex 1
If plage.Value >= 7000 And plage.Value < 8000 Then Target.Offset(0, 1).Select
If plage.Value >6000 And plage.Value < 7000 Then plage.Font.ColorIndex 3
If plage.Value >= 6000 And plage.Value < 7000 Then Target.Offset(0, 2).Select
End If
Dim Asso As Workbook
Set Asso = GetObject("I:\Asso.xls")
Dim i As Long, j As Long
For i = 7 To 85
If Workbooks("Classeur1").Sheets("Janv").Range("C" & i) <> "Esp" Then
With Asso.Sheets("CCM")
'Prochaine cellule vide de la colonne A
j = .Range("A" & .Rows.Count).End(xlUp)(2).Row
.Range("A" & i) = Workbooks("Classeur1").Sheets("Janv").Range("A" & i)
.Range("C" & i) = Workbooks("Classeur1").Sheets("Janv").Range("B" & i)
.Range("D" & i) = Workbooks("Classeur1").Sheets("Janv").Range("C" & i)
.Range("E" & i) = Workbooks("Classeur1").Sheets("Janv").Range("F" & i)
.Range("F" & i) = Workbooks("Classeur1").Sheets("Janv").Range("E" & i)
End With
End If
Next
cs_Jack
Messages postés14006Date d'inscriptionsamedi 29 décembre 2001StatutModérateurDernière intervention28 août 201579 23 août 2010 à 20:20
Salut
A l'avenir, utilise la coloration syntaxique quand tu présentes du code", c'est plus facile à lire = 3ème icone à droite.
Est-ce que ton test () ci-dessous) fonctionne ?
If Workbooks("Classeur1").Sheets("Janv").Range("C" & i) <> "Esp" Then
A quoi te sert ta variable 'j' puisque tu ne l'utilises pas ?
Tu as dû faire une erreur dans tes .Range (i --> j)
Apprends à utiliser le mode debugage :
F9 sur une ligne de code
Le programme s'y arrêtera au prochain passage
Survole avec la souris tes variables pour visualiser leur contenu, ou va dans la fenêtre de debogage (Ctrl-G) et tape
? maVariable
pour qu'elle s'inscrive dans la fenêtre.
F8 pour avancer d'une ligne de code
F5 pour continuer normalement
Vala
Jack, =fr MVP VB NB : Je ne répondrai pas aux messages privés
Le savoir est la seule matière qui s'accroit quand on la partage (Socrate)
cedana
Messages postés12Date d'inscriptionjeudi 3 juin 2010StatutMembreDernière intervention18 octobre 2013 23 août 2010 à 20:40
Bonsoir Jack.
Merci de ta réponse, effectivement il manque une ligne :
.Range("A" & j)= Workbooks("Classeur1").Sheets("Janv").Range("A" & i) .
Le code fonctionne, mais il recopie toutes les données, quelque soit la valeur de la colonne C du classeur1. Donc si valeur = "Esp" la copie ne doit pas s'effectuer. Mais je ne trouve pas la solution.Alors j'attends un peu d'aide.
Merci à vous.
En répondant à cette question, tu sauras pourquoi ton test avec "Esp" ne fonctionne pas.
Il te suffit de cliquer sur cette ligne, d'appuyer sur F9, de lancer le programme et le faire passer par là, puis de taper Ctrl-G et de taper dans la fenêtre de débug :
? Workbooks("Classeur1").Sheets("Janv").Range("C" & i).Value
C'est simple, non ?
cedana
Messages postés12Date d'inscriptionjeudi 3 juin 2010StatutMembreDernière intervention18 octobre 2013 24 août 2010 à 11:44
Bonjour Jack.
Merci pour ta réponse, après avoir completé la ligne avec .Value ça fonctionne bien.
Je suis un débutant, j'ai beaucoup à apprendre et je vais, sans plus attendre, mettre en pratique tes recommandations.
Merci pour ton aide.
Vous n’avez pas trouvé la réponse que vous recherchez ?
cs_Jack
Messages postés14006Date d'inscriptionsamedi 29 décembre 2001StatutModérateurDernière intervention28 août 201579 24 août 2010 à 13:00
De rien
Normalement, .Value est l'attribut par défaut, mais dans ton cas, il ne semblait pas l'avoir utilisé --> D'où l'intérêt d'écrire les syntaxes en entier