Création macro avec boucle

Aimy67

XLDnaute Nouveau
Bonjour,

J'ai besoin de votre aide car je débute en macro et je ne parviens pas à réaliser ce que je souhaite malgré les différents forums que j'ai consulté.

J'ai un tableau qui comprends un onglet "BASE" qui reprends pour chaque différentes informations comme le nombre d'heures réalisées avec une colonne pour chaque mois (colonne D à O) , le nb d'heure sup réalisées avec une colonne pour chaque mois (colonne Q à AB) ...

Je viens coller dans un second onglet "EXTRACTION" les informations issue d'une extraction de mon outil et je fais ensuite des recherche V dans mon tableau base pour compléter les colonnes de chaque item pour le mois concerné.

J'aimerais beaucoup automatiser cette action. Mon problème étant qu'à la première activation de la macro il faudrait que les données soient copier dans la colonne du mois de janvier puis à la seconde action dans la colonne à droite correspondant au mois de Février.

J'espère que mes explications sont claires et vous remercie de votre aide.
 

zebanx

XLDnaute Accro
Bonjour Aimy67

Cela semble très clair pour vous, mais en ayant une demande précise par rapport à un fichier, mieux vaut prévoir d'envoyer un exemple des deux bases (avec des données bidonnées comme habituellement) pour comprendre la construction de vos tableaux et ce que vous attendez comme résultats.
Cela évitera aussi, par rapport aux réponses fournies, de revenir (ie : le surbooké "c'est pas comme dans mon fichier").

Merci par avance,
xl-ment
 

Aimy67

XLDnaute Nouveau
Oui désolée, je m'en rends compte.

Je joint le fichier dans mon tableau.

En fait je souhaite créer une macro qui me permette d'automatiser une recherche V via une macro mais ça ne fonctionne pas via l'enregistreur.

J'ai deux onglets dans mon tableau un onglet BASE que j'alimente via une recherche V des données que j'exporte d'un logiciel et copie dans l'onglet 'Données mensuelles".
Je dois chaque mois effectuer cette opération.

Dans le fichier joint, je souhaite compléter le mois de juin via une recherche V. Je veux compléter les colonnes I, V, AD, AL, AT et BB en reprenant les informations qui figurent dans l'onglet données mensuelles en colonne D à I. J'étant la formule à toutes la colonne et copie colle au format texte le résultat.

Mon bouton de déclenchement de la macro s'intitule juin et est situé dans l'onglet Données mensuelles.

Je pensais reproduire cette macro pour chaque mois en créant un bouton par mois mais peut être est il possible de ne faire qu'une seule macro qui prenne en compte de décalage d'une colonne à chaque fois qu'on la lance. En juillet les colonnes à compléter seront J, W, AE, AM, AU, BC. (Peut être est il même possible de ne faire qu'une macro et pas une pour chaque mois).

Pouvez vous m'aider à faire cela.
 

Pièces jointes

  • Test macro.xlsm
    317.6 KB · Affichages: 12

Dranreb

XLDnaute Barbatruc
Bonjour.
Mettez ça dans le module Feuil1 (BASE) :
VB:
Option Explicit
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
   Dim Mois As Long, RngLR As Range, FDM As String, C As Long
   If Target.Row > 1 Or Target.Rows.Count > 1 Or Target.Columns.Count > 1 Then Exit Sub
   Mois = (Target.Column - 3) Mod 13 + 1: If Mois < 1 Or Mois > 12 Then Exit Sub
   If MsgBox("Voulez vous récupérer les """ & Feuil7.Name & """" _
      & vbLf & "pour le mois de " & Format(DateSerial(1900, Mois, 1), "mmmm") & " ?", _
      vbYesNo + vbQuestion, Me.Name) = vbNo Then Exit Sub
   Set RngLR = Me.Rows(2).Resize(Me.UsedRange.Rows.Count - 1)
   FDM = "'" & Feuil7.Name & "'!"
   RngLR.Columns("CE").FormulaR1C1 = "=MATCH(RC1," & FDM & "C1,0)"
   For C = 0 To 5
      With RngLR.Columns(2 + Mois + 13 * C)
         .FormulaR1C1 = "=INDEX(" & FDM & "C" & C + 4 & ",RC83)"
         .Value = .Value: End With
      RngLR.Columns(15 + 13 * C).FormulaR1C1 = "=RC[" & Mois - 13 & "]-RC[" & Mois - 14 & "]"
      Next C
   RngLR.Columns("CE").ClearContents
   End Sub
Puis sélectionnez un titre de colonne.
 

Discussions similaires

Statistiques des forums

Discussions
311 724
Messages
2 081 936
Membres
101 844
dernier inscrit
pktla