Coller une valeur à coté d'une cellule en fonction de la valeur d'une autre

tim_so

XLDnaute Nouveau
Bonjour à tous,

Bon je l'avoue mon titre n'est pas très explicite mais je n'ai pas réussi à trouver un titre qui explique simplement ma demande. Avec plusieurs phrases et un exemple ce sera plus simple (enfin j'espère !!).

J'ai un fichier " test" de statistiques avec plusieurs feuilles (dans l'exemple je n'ai mis qu'une de mes feuilles de stat histoire d'alléger le fichier !), les données renseignées dans mes tableaux se trouvent dans un autre classeur (dont la fin du nom change à chaque fois d'où le début de ma macro). Donc dans ma macro j'ouvre le classeur et je vais copier mes données et je dois les coller dans mon tableau en face du mois correspondant. Pour savoir quel est le mois correspondant il faut se référer à la cellule "G1" de la feuille "Utilisation du fichier".

En fait ma macro fonctionne très bien mais je suis persuadée que l'on peut l'alléger. J'ai fait des recherches mais n'est rien trouvé.

Peut-on dire qu'il faut aller voir la valeur dans la cellule "G1" de la feuille "Utilisation du fichier" et qu'ensuite il colle à côté du mois correspondant dans la feuille "ACTIVITE EXTERNE" (en sachant qu'il y a plusieurs graphiques par feuilles et donc plusieurs données à coller)??

Si il n'y a pas possibilité de la rendre plus simple je la garderais telle qu'elle est mais ça intéresserait vraiment de savoir s'il y a une autre méthode.

J'espère que j'ai été à peu près claire dans mes explications, je mets en pièce joint mon fichier et ci-dessous mon code :

Code:
Sub test_if_activite_externe()
  
  'If Range("E1").Value = "Juillet" Then
'ActiveSheet.Range("A5:A17").AutoFilter Field:=1, Criteria1:=Range("E1").Value
    'End If
    Chemin = "J:\Stats DIM\TABLEAU DE BORD\PJ_outlook\"
    Part = "TABLEAU+DE+BORD+DIM+EXTERNE.Etab"
    Chem2 = Dir(Chemin & "\" & Part & "*.xls")
 
  If Sheets("Utilisation du fichier").Range("G1").Value = "Janvier" Then
    Workbooks.Open Filename:=Chemin & "\" & Dir(Chemin & "\" & Part & "*.xls")
    Sheets("2.  E6").Range("O96:Q96").Copy
    Windows("STATS SERVICES.xlsm").Activate
    Sheets("ACTIVITE EXTERNE").Select
    Range("G6").Select
    ActiveSheet.Paste
    Application.CutCopyMode = False
 End If
  
   If Sheets("Utilisation du fichier").Range("G1").Value = "Février" Then
    Workbooks.Open Filename:=Chemin & "\" & Dir(Chemin & "\" & Part & "*.xls")
    Sheets("2.  E6").Range("O96:Q96").Copy
    Windows("STATS SERVICES.xlsm").Activate
    Sheets("ACTIVITE EXTERNE").Select
    Range("G7").Select
    ActiveSheet.Paste
    Application.CutCopyMode = False
 End If
 
If Sheets("Utilisation du fichier").Range("G1").Value = "Mars" Then
    Workbooks.Open Filename:=Chemin & "\" & Dir(Chemin & "\" & Part & "*.xls")
    Sheets("2.  E6").Range("O96:Q96").Copy
    Windows("STATS SERVICES.xlsm").Activate
    Sheets("ACTIVITE EXTERNE").Select
    Range("G8").Select
    ActiveSheet.Paste
    Application.CutCopyMode = False
 End If

End Sub

Je n'ai préparé ma macro que jusqu'à mars en attendant de voir si il y avait une autre manière de faire.

Merci d'avance pour votre aide.

sophie
 

Pièces jointes

  • test.xlsm
    93.6 KB · Affichages: 64
  • test.xlsm
    93.6 KB · Affichages: 74
  • test.xlsm
    93.6 KB · Affichages: 70

jpb388

XLDnaute Accro
Re : Coller une valeur à coté d'une cellule en fonction de la valeur d'une autre

Bonjour à tous

je n'ai pas testé mais je pense que cela devra faire l'affaire

Sub test_if_activite_externe()

'If Range("E1").Value = "Juillet" Then
'ActiveSheet.Range("A5:A17").AutoFilter Field:=1, Criteria1:=Range("E1").Value
'End If
Chemin = "J:\Stats DIM\TABLEAU DE BORD\PJ_outlook\"
Part = "TABLEAU+DE+BORD+DIM+EXTERNE.Etab"
Chem2 = Dir(Chemin & "\" & Part & "*.xls")
For i = 1 To 12
mois = Choose(i, "Janvier", "Février", "Mars", "Avril", "Mai", "Juin", "Juillet", "Aout", "Septembre", "Octobre", "Novembre", "Décembre")
If Sheets("Utilisation du fichier").Range("G1").Value = mois Then
Workbooks.Open Filename:=Chemin & "\" & Dir(Chemin & "\" & Part & "*.xls")
Sheets("2. E6").Range("O96:Q96").Copy
Windows("STATS SERVICES.xlsm").Activate
Sheets("ACTIVITE EXTERNE").Select
Range("G" & 5 + i).Select
ActiveSheet.Paste
Application.CutCopyMode = False
End If
Next
End Sub

a+
 

tim_so

XLDnaute Nouveau
Re : Coller une valeur à coté d'une cellule en fonction de la valeur d'une autre

Bonjour à tous,

Je viens de voir ton message jpb388 et quelle merveille de commencer la semaine en testant une solution proposée sur ce forum et qui fonctionne !!! :) Je vais aller loin mais ça m'a donné le sourire, je désespérais de trouver quelque chose !!

C'est tout à fait ce que je voulais et je te confirme que ta macro fonctionne parfaitement.

Je te remercie beaucoup.

Sophie
 

Discussions similaires

Statistiques des forums

Discussions
314 634
Messages
2 111 421
Membres
111 129
dernier inscrit
Mike82