Besoin d'aide VBA incrémentation - copier-coller ... MERCI :-)

ksandraa

XLDnaute Nouveau
Bonjour,

Je souhaite faire une mise à jour automatique de mes reporting mensuel.
Pour cela j'ai fais un code VBA qui je pense peut être réellement simplifié mais je n'ai pas la connaissance et même avec mes bouquins j'ai du mal ... je sollicite donc votre aide.

J'explique
j'ai un tableau de synthèse que je dois copier dans plusieurs onglets selon les services.
Je dois faire cet exercice tous les mois ... j'ai donc créer une boîte de dialogue qui me demande de choisir le mois que je veux remplir à partir de mon tableau de synthèse sur mes onglets de services. j'ai donc tapé le code pour le mois de janvier et maintenant je voudrais pouvoir incrémenter mes cellules selon le mois que '(aurais chois dans ma boîte de dialogue.

Exemple
Je lance ma macro, il me demande quel mois je veux saisir, je réponds janvier et je confirme que c'est bien la colonne de janvier qui va être saisie dans les cellules D9 à D30 par exemple.
pour le mois de février c'est pareil il me demande via la boîte de dialogue et je confirme mais je ne veux pas tapé le code pour tous les mois de l'année je voudrais qu'a partir du moment que je lui dis que mes données doivent être saisies en février il les saisi dans la colonne février et dans les bonnes cellules par exemple de E9 à E30.

je joins mon fichier en espérant avoir été plus ou moins clair


Merci d'avance
Ksandraa
 
Dernière édition:

Papou-net

XLDnaute Barbatruc
Re : Besoin d'aide VBA incrémentation - copier-coller ... MERCI :)

Bonsoir ksandraa,

Ci-dessous un début de piste pour simplifier et optimiser ton code:

Code:
Sub Miseàjoureffectif()
'
' Miseàjoureffectif Macro
' Mise à jour des effectifs mensuel
'
' Touche de raccourci du clavier: Ctrl+m

mois = InputBox("Saissisez le mois", "Mise à jour du mois de")
MsgBox "Vous allez mettre à jour les effectifs du mois de" & " " & mois

Application.ScreenUpdating = False 'suspend le rafraîchissement d'écran pour éviter le "scintillement"
Select Case mois
Case "Janvier"

'NAV

Sheets("Contrôle ETP").Range("B140:b155").Copy
Sheets("Reporting mensuel - NAV").Range("d9:d24").PasteSpecial Paste:=xlPasteValues, _
  Operation:=xlNone, SkipBlanks:=False, Transpose:=True
Application.CutCopyMode = False

Sheets("Contrôle ETP").Range("c140:c155").Copy
Sheets("Reporting mensuel - NAV").Range("D37").PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
  :=False, Transpose:=True
Application.CutCopyMode = False
ActiveWindow.SmallScroll Down:=-3
    
Sheets("Contrôle ETP").Range("d140:d155").Copy
Sheets("Reporting mensuel - NAV").Range("d64").PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
  :=False, Transpose:=True
Application.CutCopyMode = False

Sheets("Contrôle ETP").Range("E140:E155").Copy
Sheets("Reporting mensuel - NAV").Range("D92").PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
  :=False, Transpose:=True

'SVS

Etc......
Application.ScreenUpdating = True
End Sub

Je n'ai traité que la partie NAV pour Janvier, je te laisse le soin de continuer pour la suite. Tu noteras qu'il est inutile de sélectionner les feuilles et les cellules sources pour les copier dans les feuilles et cellules cibles.

Par contre, les intervalles des plages à copier-coller ne semblant pas constants, il est peu aisé de les incrémenter au sein d'une boucle. Il serait peut-être intéressant de revoir la structure des données, mais toi seule peut le confirmer.

A +

Cordialement.
 

Robert

XLDnaute Barbatruc
Repose en paix
Re : Besoin d'aide VBA incrémentation - copier-coller ... MERCI :)

Bonsoir Kssandra, bonsoir le forum,

Difficile de t'aider avec le fichier exemple que tu fournis ou les plages 140:155 sont vides... On n'a pas tous les éléments ! Toutefois, j'imagine que la solution serait de passer par une variable COL (COLonne) associée au mois de la boîte d'entrée, du style :

Code:
Sub Miseàjoureffectif()
Dim COL As Integer 'déclare la variable COL (COLonne)

mois = InputBox("Saissisez le mois", "Mise à jour du mois de")
MsgBox "Vous allez mettre à jour les effectifs du mois de " & mois

Select Case UCase(mois) 'cela permet de valider tout aussi bien "janvier" que "Janvier" ou "JANVIER"
    Case "JANVIER"
        COL = 4 'définit la colonne COL 
        'etc...
Par la suite les plages ne seront plus en dur comme :
Code:
Sheets("Reporting mensuel - NAV").Select
Range("d9:d24").Select
mais avec la variable :
Code:
With Sheets("Reporting mensuel - NAV")
     .Range(.Cells(9,Col),.Cells(24,Col)).Select

[Édition]
Bonsoir Papou-net on s'est croisé...
 

Modeste

XLDnaute Barbatruc
Re : Besoin d'aide VBA incrémentation - copier-coller ... MERCI :)

Bonsoir ksandraa,
Salut Papou-net :), salut Robert :)

C'est le rendez-vous des jeunes branchés, ce fil !! ;)
Comme mes petits camarades de jeu, j'ai un peu de mal à y voir clair ...
Une proposition en pièce jointe qui ne prend en compte que "a", "b", "c" et "d" je ne sais pas trop ce qu'il y a plus à droite :confused:
Par ailleurs, je ne sais pas non plus ce qui permet de déterminer si la plage à copier est relative au mois de janvier?

J'ai créé un petit UserForm, avec une liste déroulante reprenant les noms des mois (ça évite les erreurs d'encodage!). Pour le lancer, dans ton module1, j'ai ajouter une Sub Afficher

Le code me semble plus concis ... mais il y a sans doute des choses à ajouter et d'autres que j'ai oubliées ou pas comprises ... teste et tu verras bien :)

PS: je me suis permis de supprimer la feuille (masquée) "Table". Elle n'apportait rien ici, mais alourdissait considérablement le fichier.
 

Pièces jointes

  • Test mois 1 (ksandraa).xlsm
    75.3 KB · Affichages: 31

Robert

XLDnaute Barbatruc
Repose en paix
Re : Besoin d'aide VBA incrémentation - copier-coller ... MERCI :)

Bonsoir le fil, bonsoir le forum,

C'est le rendez-vous des jeunes branchés, ce fil !! ;)

Non mais t'entends ça Papou-net ! Y s'rait pas en train de se foutre de notre gueule ce jeunot de Modeste... Heureusement que je l'aime sinon je serai monté illico sur mon grand bourricot (ben j'ai pas les moyens pour le cheval...) et comment que je te l'aurais remis en place l'énergumène...

Tiens cette phrase me rappelle une vanne lue dans un livre de De Caunes. Je crois qu'il citait l'éternelle Rika qui disait à son interviewer: je tiens à remettre les pendules en place ! Lui de lui répondre : à l'heure... Énervée, elle rétorque : Oui si vous voulez, à leurs places...
 

Papou-net

XLDnaute Barbatruc
Re : Besoin d'aide VBA incrémentation - copier-coller ... MERCI :)

Bonsoir Modeste, bonsoir Robert,

Non mais t'entends ça Papou-net ! Y s'rait pas en train de se foutre de notre gueule ce jeunot de Modeste...

Ben je ne crois pas mais si c'est le cas, à notre tour de rester modestes face à la "belle gigue" (pas de sous-entendu, c'est juste un jeu de mots. Moi aussi je l'aime bien ce petit jeunot).

Énervée, elle rétorque : Oui si vous voulez, à leurs places...

Celle-là elle mériterait de figurer dans la rubrique humour du salon, n'est-il pas?

Pour rester sur le fond de la question, il est clair que ce n'est pas très clair. La solution serait effectivement (amha) de passer par une boucle mais à condition de restructurer les données. (Tiens, je crois que le jeune branché se répète là!)

Bonne soirée à tous.

Cordialement.
 

Discussions similaires

Réponses
9
Affichages
397
Réponses
7
Affichages
406

Membres actuellement en ligne

Aucun membre en ligne actuellement.

Statistiques des forums

Discussions
312 429
Messages
2 088 350
Membres
103 823
dernier inscrit
ben talha redouane