macro décalage

passiflore

XLDnaute Nouveau
Bonjour,

J’ai besoin de votre aide pour finir ma macro.

Il s’agit d’une macro pour copier/coller toujours les même cellule source de la feuille 1 dans différentes cellule destination de la feuille 2 (en fait toujours les même cellule mais décaler de 4 colonnes). En fonction de la valeur de C4, il faut copier/coller dans une cellule différente mais sur la même ligne : B8 si la valeur de C4 est 1, F8 si la valeur de C4 est 2, etc. On décale de 4 colonnes à chaque fois.

Dans cette macro, les Ranges avec un point devant ne changent jamais.
Seul les Ranges sans point devant varient en fonction de la valeur de C4.
Ce sont eux que je devrais décaler de 4 colonnes à chaque fois.
Peut-on demander d’exécuter la même macro en décalant toutes le range sans point devant de 4 colonnes à chaque fois ?

Merci par avance pour votre aide.
Céline
 

kjin

XLDnaute Barbatruc
Re : macro décalage

Bonjour,
Plutôt que de doubler tes messages, BrunoM s'est penché sur ton pb [thread=132133] ICI [/thread]sans que tu daignes lui répondre
Et sa réponse comme la mienne, un fichier simplifié est nécessaire !
Edit : tout comme celle de phlaurent que je salue
A bon entendeur
kjin
 

kjin

XLDnaute Barbatruc
Re : macro décalage

Re,
Comme je ne comprends rien de quoi doit aller où, je te laisse poursuivre, si j'ai bien compris
Code:
Sub export()
Jour = Int(Range("C4")) 'on attribue à la variable jour la valeur de C4
With Sheets("F2") 'dans la feuille F2
    Set col = .Rows(3).Find(Jour) 'on cherche le jour dans la ligne 8
    If Not col Is Nothing Then 'si on trouve
        c = col.Column 'c est le n° colonne trouvée
        .Cells(19, c - 2) = Range("C16") 'ici la cellule B19 de F2 = cellule C16 de F1
        ' à continuer
    End If
End With

End Sub
A+
kjin
 

Pièces jointes

  • passiflore.zip
    24.3 KB · Affichages: 56

passiflore

XLDnaute Nouveau
Re : macro décalage

Bonjour kjin et tous les membres de ce forum,

Voila, j’ai essayé de travailler dessus ce week-end mais je m’y suis completement perdu...
Je me suis embourbé dans ce code et n’arrive pas du tout à gérer les Cells…
Existerait-il quelque chose qui ressemblerait a ceci :

If F_S.Range("C4").Value = 2 Then
Application.Run "Sam1" en décalant TOUTES LES RANGES DE DESTINATION de 4 colonnes
End Sub

Ou fait-il obligatoirement reprendre 1 à 1 les ranges ou cells avec offset?
 

kjin

XLDnaute Barbatruc
Re : macro décalage

Bonjour,
Pourquoi n'utilises tu pas le code fourni ?!
La seule chose qui me bloquait était que je ne comprenais pas la correspondance entre les cellules du tableau de saisie et celles du tableau de synthèse.Donc sans plus d'explication de ta part...
Donc 3 solutions
- tu refais ton tableau de saisie conforme au tableau de synthèse
- tu saisies une à une les cellules dans la macro
- tu passes par une feuille intermédaire avec des formules simples et conforme au tableau de synthèse.
Ici par exemple avec une feuille intermédiaire, nommée "Temp"
Code:
Sub export()
Jour = Int(Range("C4")) 'on attribue à la variable jour la valeur de C4
tablo = Sheets("Temp").Range("B6:C66").Value
With Sheets("F2") 'dans la feuille F2
    Set col = .Rows(3).Find(Jour, , xlValue) 'on cherche le jour dans la ligne 8
    If Not col Is Nothing Then 'si on trouve
        c = col.Column 'c est le n° colonne trouvée
        .Range(.Cells(6, c - 2), .Cells(66, c - 1)) = tablo
    End If
End With

End Sub
A noter qu'il faudra peut-être aussi prévoir le vidage des cellules de la feuille F1 après exportation
A+
kjin
 

Pièces jointes

  • passiflore2.zip
    17.1 KB · Affichages: 57

Discussions similaires

Réponses
12
Affichages
284
Réponses
6
Affichages
216

Statistiques des forums

Discussions
312 502
Messages
2 089 040
Membres
104 010
dernier inscrit
Freba