VBA Echange données tableau fixe/tableau variable

Bonjour le forum

Là je souffre il est 2 h du mat

Il s'agit d'echanger des données entre un tableau contenant des données variables pour les envoyer dans un tableau

contenant des données figées

le lien entre les Deux tableaux est le n° d'agence

Le mieux est de voir le fichier explicatif

Merci de l'aide

Bisous

Cordialement

Muriel

Bonsoir,

Voici une proposition pour te dépanner :

Sub MAJ()

'Pour le 1er tableau, à répéter pour les 30 tableaux, changer les plages
Call MAJ_Tablo(Feuil1.Range("V1:V18"), Feuil1.Range("L22:L31"))

End Sub

Sub MAJ_Tablo(pTab1 As Range, pTab2 As Range)
'pTab1 est la plage contenant les agences dans la colonne V
'pTab2 est la plage contenant les agensces dans la colonne L
Dim c1 As Range, c2 As Range

For Each c1 In pTab1
   For Each c2 In pTab2
        If c2 = c1 Then
            'on additionne les effectifs
            c1.Offset(0, 2) = c1.Offset(0, 2) + c2.Offset(0, 1)
        End If
   Next c2
Next c1
End Sub

Note : la macro n'est pas optimisée si tes tableaux ont plusieurs (centaines de) lignes et risque de prendre plusieurs secondes à rouler. Il y a moyen de faire mieux mais en 5 minutes c'est tout ce que je peux offrir pour l'instant.

A+

bonjour le forum

Bonjour Grand Chaman ==> bisous

Bravo, génial et tu as fais ça en 5 minutes, bigre moi si je pouvais le faire en 3 heures je serai

Du coup forte de tes enseignements ( j'ai apprécié tes commentaires) j'ai rajouté

1) l'analyse des champs Caht, intérims, et le transfert des données et ca marche

2) une cellule de calcul pour lancer la procédure

3) un tableau des plages des nombreux tableaux identiques ' environ 30)

Là il et 2h suis naze je bloque sur le renvois des plages à cause d'un "vilain" "Qualificateur incorrect"

mais malgé ce vilain grace à vous je progresse bien, je m'attendais pas 3 semaines découverte de VBA à comprendre les programmes et à en construire.

Merci à tous de m'aider pour finir cette procédure, suit la procédure et le fichier explicatif

bisous

Cordialement

Muriel

ps Gd Chaman j'ai vu ton site j'y reviendrai

Sub MAJ()

'Pour les emplacements servant à répéter pour les 30 tableaux

Call MAJ_Tablo(Feuil1.Range("$D$15"), Feuil1.Range("$F$15"), Feuil1.Range("C17:C24"))

End Sub

' D12 cellule de calcul lance la procédure

Sub MAJ_Tablo(pTab1 As Range, pTab2 As Range, pTab3 As Range)

'pTab1 est la plage contenant les agences dans la colonne V

'pTab2 est la plage contenant les agences dans la colonne L

Dim c1 As Range, c2 As Range, c3 As Range, c4 As Integer

If Range("$D$12") = 1 Then

For c4 = 1 To 10

Range("$C$15").Formula = c4

For Each c3 In pTab3

Range("$A$15").Formula = c3

If c3 = c4 Then

'Selection de la première "plage" de tableaux à mettre en D15 et F15

c4.Offset(0, 1) = c3.Offset(0, 1)'problème avec c4 => qualificateur incorrect ??

c4.Offset(0, 3) = c3.ofsset(0, 3)

End If

For Each c1 In pTab1

For Each c2 In pTab2

If c2 = c1 Then

'on additionne les effectifs, les caht, les intérims

c1.Offset(0, 2) = c1.Offset(0, 2) + c2.Offset(0, 1)

c1.Offset(0, 4) = c1.Offset(0, 4) + c2.Offset(0, 2)

c1.Offset(0, 6) = c1.Offset(0, 6) + c2.Offset(0, 3)

End If

Next c2

Next c1

Next c3

Next c4

' Pour que le compteur pointe la première plage de tableaux

c4 = 1

End If

End Sub

Bonsoir,

Je n'ai malheureusement pas beaucoup de temps ce soir alors je te donne une piste pour commencer. J'y reviendrai demain probablement.

Tu ne peux pas utiliser .offset avec c4 car c4 est défini comme une variable de type "Integer" (0,1,2,....).

.Offset fonctionne uniquement avec des variables de types "Range" et ça permet de décaler de x lignes, y colonnes (.offset(x,y)).

c4.Offset(0, 1) = c3.Offset(0, 1)'problème avec c4 => qualificateur incorrect ??
c4.Offset(0, 3) = c3.ofsset(0, 3)

A vérifier...

Edit : Finalement j'ai eu un peu de temps pour regarder ton code. J'ai conservé ton principe de nommer les plages mais j'ai corrigé la macro pour que ça fonctionne. Voir fichier joint.

PS : Pour mon site, c'est encore embryonnaire et plus un passe-temps pour le moment. Tant mieux si tu y trouves des infos utiles...

bonjour le forum

bisous gd Chaman

Genial ca marche super du grand art et svp avec commentaires pour comprendre

Sache que j'ai pensé que c4 declaré integer ne convenait pas aussi et j'ai pensé utiliser une astuce en declarant c4 for Each identique à c3 et ca marche mais de façon bizare (perte de temps de c3 qui attend c4 aprés Next c3) car il faudrait que je puisse déclarer en même temps Next c4, c3 et ça je pense que ce n'est pas possible ?? M'enfin je cherche plus...

Aussi; je vais intégrer ton dernier programme dans le projet apres avoir ajouté le déclenchement par une cellule de calcul

Merci pour tout c'est super...

Gros bisous

A bientôt

Cordialement

Muriel

Rechercher des sujets similaires à "vba echange donnees tableau fixe variable"