Problème boucles while, if et for

Aurianelm

XLDnaute Nouveau
Bonjour,

J'espère vraiment que vous allez pouvoir m'aider !!

J'ai un premier tableau qui est un TCD généré par Excel à double entrée :
Les télévendeurs en ligne et le type d'action menée en colonne

Il faut que je copie ces données et que je les colle dans un autre tableau également à double entrée (mêmes critères). Seulement dans ce dernier tableau, les colonnes ne sont pas forcément les mêmes que dans le premier. Il faut donc que :
Si le télévendeur1 est également dans le 2ème tableau alors je regarde le 1er critère colonne du 1er, regarde s'il est également dans le 2ème et alors seulement que copie/colle la donnée qui correspond.

J'ai écris ce programme qui fonctionne pour le 1er critère colonne mais qui ensuite tourne en boucle et ne génère plus rien.


Sub remplir()

Dim mois As String, annee As String, semaine As String, fic_journalier As String, rep As String

fic_journalier = "RESULTATS JOURNALIERS"
mois = InputBox("Sur quel mois ? (en toutes lettres)")
annee = InputBox("Sur quelle année")
semaine = InputBox("Sur quelle semaine (numéro de la semaine)")

Windows("REQUETE MARS.xls").Activate
Range("B5").Select
i = 1
j = 0
k = 0
l = 0

While Range("B5").Offset(0, l).Value <> " "
If Range("B5").Offset(0, l).Value = "APPEL1" Then
For i = 1 To 20
If Range("A6").Offset(j, 0).Value = "T.ACTEUR" & i Then
Range("B6").Offset(j, 0).Copy
Windows(fic_journalier & " " & mois & " " & annee & " " & "S" & semaine & ".xls").Activate
Range("C5").Offset(k, 0).PasteSpecial
j = j + 1
k = k + 1
Else
Windows(fic_journalier & " " & mois & " " & annee & " " & "S" & semaine & ".xls").Activate
Range("C5").Offset(k, 0).Value = " "
Windows("REQUETE MARS.xls").Activate
k = k + 1
End If
l = l + 1
Next
Else
If Range("B5").Offset(0, l).Value = "APPEL2" Then
For i = 1 To 20
If Range("A6").Offset(j, 0).Value = "T.ACTEUR" & i Then
Range("B6").Offset(j, 0).Copy
Windows(fic_journalier & " " & mois & " " & annee & " " & "S" & semaine & ".xls").Activate
Range("C5").Offset(k, 0).PasteSpecial
j = j + 1
k = k + 1
Else
Windows(fic_journalier & " " & mois & " " & annee & " " & "S" & semaine & ".xls").Activate
Range("C5").Offset(k, 0).Value = " "
Windows("REQUETE MARS.xls").Activate
k = k + 1
End If
l = l + 1
Next
End If
End If
Wend
End Sub


Pour mieux comprendre je vous joint un exemple des 2 tableaux en question.
Merci.

Auriane
 

Pièces jointes

  • REQUETE MARS EXEMPLE.xls
    234.5 KB · Affichages: 31
  • RESULTATS JOURNALIERS mars 2013 S11 EXEMPLE.xls
    15 KB · Affichages: 29
  • REQUETE MARS EXEMPLE.xls
    234.5 KB · Affichages: 34
  • RESULTATS JOURNALIERS mars 2013 S11 EXEMPLE.xls
    15 KB · Affichages: 29
  • REQUETE MARS EXEMPLE.xls
    234.5 KB · Affichages: 28
  • RESULTATS JOURNALIERS mars 2013 S11 EXEMPLE.xls
    15 KB · Affichages: 31

Dranreb

XLDnaute Barbatruc
Re : Problème boucles while, if et for

Bonjour
Pourquoi ne le feriez vous pas à l'aide de formules.
En U5:
Code:
=EQUIV($A5;'[REQUETE MARS EXEMPLE.xls]TCD'!$A$6:$A$11;0)
En C5:
Code:
=SI(ESTNA($U5);"";INDEX('[REQUETE MARS EXEMPLE.xls]TCD'!B$6:B$11;$U5))
Propagé à droite, et toute la ligne propagée vers le bas.
À +
 

Aurianelm

XLDnaute Nouveau
Re : Problème boucles while, if et for

Parce que je dois faire un programme automatisé. Que la personne n'ai qu'à lancer la macro. Sachant qu'avant le programme pour lequel je vous demande de l'aide j'ai une autre macro qui créé le fichier RESULTATS JOURNALIERS mars 2013 S11 et qu'encore une autre macro qui créé le TCD (qui est lancé chaque jour sur un fichier de données toujours construit de la même façon mais avec des données différentes, mise à jour chaque jour).

En tout cas merci pour votre aide :)
 

Dranreb

XLDnaute Barbatruc
Re : Problème boucles while, if et for

J'ai dit "à l'aide de formules". Cela sous-entendait que si les formules peuvent, certes, être mises au point sur la feuille, rien n'empêche d'écrire une macro qui les installe, quitte à en figer ensuite les valeurs en faisant .Value = .Value sur toute la plage, puis supprimer la colonne U.
Cela pourrait être rapide si fait sans boucle sur les lignes. Les FormulaR1C1 peuvent en effet être mis d'un coup sur toute une colonne. Voire la même formule =INDEX partout, si l'on prend soin de mettre les numéros de colonne dans une ligne libre comme on a mis les numéros de lignes dans la colonne U.
 
Dernière édition:

Discussions similaires