Problème travail sur 2 feuilles avec 1 programme vba
Résolu
VBABA
-
VBABA -
VBABA -
Bonjour,
J'ai beau chercher la solution à mon problème sur tous les forum mais je n'y arrive pas.
Voici un extrait de mon code:
En clair, ici je voudrais effectuer le remplissage d'un tableau sur ma deuxième feuille puis récupérer les résultats pour les mettre dans mon tableau de la première feuille.
J'espère que vous saurez m'aider.
Merci d'avance
J'ai beau chercher la solution à mon problème sur tous les forum mais je n'y arrive pas.
Voici un extrait de mon code:
With Worksheets(2) For l = 2 To 11 If Cells(1, 3) = Cells(24, i) Then For m = 3 To 19 For n = 25 To 41 If Cells(j, 1) = Cells(k, i) Then Cells(j, 2) = Cells(k, i - 1) / 7 Exit For End If Next Next End If Next End With For l = 3 To 19 For m = 3 To 19 If Cells(l, 1) = Sheets(2).Cells(m, 1) Then Cells(l, i + 1) = Sheets(2).Cells(m, 6) Exit For End If Next Next
En clair, ici je voudrais effectuer le remplissage d'un tableau sur ma deuxième feuille puis récupérer les résultats pour les mettre dans mon tableau de la première feuille.
J'espère que vous saurez m'aider.
Merci d'avance
A voir également:
- Problème travail sur 2 feuilles avec 1 programme vba
- Comment faire un livret avec des feuilles a4 - Guide
- Supercopier 2 - Télécharger - Gestion de fichiers
- Programme demarrage windows - Guide
- Whatsapp avec 2 sim - Guide
- Word numéro de page 1/2 - Guide
4 réponses
Bonjour,
Comme je viens de poster un problème, j'ai vu votre question. Lorsqu'on manipule des données de plusieurs onglets, il est prudent de bien les définir.
Voici un petit exemple que vous pourrez adapter à votre procédure :
Bon courage
Jean
Comme je viens de poster un problème, j'ai vu votre question. Lorsqu'on manipule des données de plusieurs onglets, il est prudent de bien les définir.
Voici un petit exemple que vous pourrez adapter à votre procédure :
Option Explicit Dim WS1 As Worksheet Dim WS2 As Worksheet Sub test() Set WS1 = Sheets("Donnees") Set WS2 = Sheets("Results") WS1.Range("A10") = WS2.Range("C5") End Sub
Bon courage
Jean
Bonjour,
Pour compléter la réponse de GrandJean, lorsque l'on référence un objet dans un bloc With, il faut ensuite "rattacher" les objets s'y rapportant.
Pour cela, il suffit de mettre un point devant.
Exemple :
Pour compléter la réponse de GrandJean, lorsque l'on référence un objet dans un bloc With, il faut ensuite "rattacher" les objets s'y rapportant.
Pour cela, il suffit de mettre un point devant.
Exemple :
'sélectionne la Feuil1. Feuil1 = feuille active Sheets("Feuil1").Select With Sheets("Feuil2") 'se rapporte à la feuil2 (point devant) .Range("A1").Value = 18 'sans point devant se rapporte à la feuille active : Feuil1 Range("A1") = "salon de l'agriculture" End With
Merci de vos réponses.
J'ai combiné vos 2 reponses mais ça ne fonctionne toujours pas.
ps: j'ai bien déclaré les 2 worksheet au début de mon code
Si j'applique séparemment: premiere partie sur une macro sur feuille 2 puis j'active la macro de la feuille 1 pour aller chercher les données de la feuille 2 ça fonctionne
Mais j'aimerais ne pas avoir à aller activer une macro sur une feuille puis lancer ma macro principale de la feuille 1 après.
Le problème actuel c'est que ça me prend bien les données de la 2éme feuille mais ça ne met pas à jour ma deuxième feuille
J'ai combiné vos 2 reponses mais ça ne fonctionne toujours pas.
Set ws1 = Sheets("Matrice(charge x)") Set ws2 = Sheets("Objectifs") Sheets("Matrice(charge x)").Select With Sheets("Objectifs") For l = 2 To 11 If .Cells(1, 3) = .Cells(24, i) Then For m = 3 To 19 For n = 25 To 41 If .Cells(j, 1) = .Cells(k, i) Then .Cells(j, 2) = .Cells(k, i - 1) / 7 Exit For End If Next Next End If Next For l = 3 To 19 For m = 3 To 19 If Cells(l, 1) = .Cells(m, 1) Then Cells(l, i + 1) = .Cells(m, 6) Exit For End If Next Next End With
ps: j'ai bien déclaré les 2 worksheet au début de mon code
Si j'applique séparemment: premiere partie sur une macro sur feuille 2 puis j'active la macro de la feuille 1 pour aller chercher les données de la feuille 2 ça fonctionne
Mais j'aimerais ne pas avoir à aller activer une macro sur une feuille puis lancer ma macro principale de la feuille 1 après.
Le problème actuel c'est que ça me prend bien les données de la 2éme feuille mais ça ne met pas à jour ma deuxième feuille
Bojour
1/A quoi sert For l = 2 To 11
2/: tu met toujours la m^me valeur dans cells(1,3)?
3/ a quoi servent "n" et "m" ?
4/ d'où sortent "j" et "k" ?
For l = 2 To 11
If .Cells(1, 3) = .Cells(24, i) Then
For m = 3 To 19
For n = 25 To 41
If .Cells(j, 1) = .Cells(k, i) Then
.Cells(j, 2) = .Cells(k, i - 1) / 7
Exit For
End If
Next
Next
End If
Next
1/A quoi sert For l = 2 To 11
2/: tu met toujours la m^me valeur dans cells(1,3)?
3/ a quoi servent "n" et "m" ?
4/ d'où sortent "j" et "k" ?