Remplissage d'un tableau en fonction valeurs de cellule d'une autre feuille

MAGDEM

XLDnaute Nouveau
Bonjour à tous,

Me voilà avec un nouveau dilemme...

Je voudrais un remplissage automatique de l'onglet "Plan d'action" en fonction du résultat d'une cellule de l'autre onglet "Test".
Je m'explique mieux,
Onglet "Test" si le chiffre de la colonne AG est 3 ou 4 alors je souhaiterais que dans l'onglet "Plan d'action" les colonnes A, B, C, D, E et F soient remplies avec les informations de l'onglet "Test" des colonnes correspondantes (soit respectivement colonnes A, AE, B, C, J, AF).

J'espère être suffisamment claire et surtout que vous pourrez m'aider. Je pense que ce n'est sûrement pas trop compliqué mais c'est dans la limite de mes compétences Excel.

Je vous joint le fichier correspondant.

Merci d 'avance de votre aide.
 

Pièces jointes

  • test.xlsx
    85.9 KB · Affichages: 46
  • test.xlsx
    85.9 KB · Affichages: 49
  • test.xlsx
    85.9 KB · Affichages: 51

Robert

XLDnaute Barbatruc
Repose en paix
Re : Remplissage d'un tableau en fonction valeurs de cellule d'une autre feuille

Bonjour Madgem, bonjour le forum,

peut-être comme ça :
Code:
Sub Macro1()
Dim t As Object 'déclare la variable t (onglet Test)
Dim p As Object 'déclare la variable p (onglet Plan d'action)
Dim dl As Long 'déclare la variable dl (Dernière Ligne)
Dim pl As Range 'déclare la variable PL (PLage)
Dim cel As Range 'déclare la variable cel(CELlule)
Dim dest As Range 'déclare la variable dest (cellule de DESTination)

Set t = Sheets("Test") 'définit l'onglet t
Set p = Sheets("Plan d'action") 'définit l'onglet p
dl = t.Cells(Application.Rows.Count, 33).End(xlUp).Row 'définit la dernière ligne éditée dl de la colonne 33 (=AG) de l'onglet t
Set pl = t.Range("AG5:AG" & dl) 'définit la plage pl
For Each cel In pl 'boucle sur toutes les cellules cel de la plage pl
    If cel.Value = 3 Or cel.Value = 4 Then 'condition : si la valeur de la cellule est 3 ou 4
        Set dest = p.Cells(Application.Rows.Count, 1).End(xlUp).Offset(1, 0) 'définit la cellule de destination
        dest.Value = t.Cells(cel.Row, 1).Value 'récupère en colonne A de p la valeur en colonne A de t
        dest.Offset(0, 1).Value = t.Cells(cel.Row, 31).Value 'récupère en colonne B de p la valeur en colonne AE de t
        dest.Offset(0, 2).Value = t.Cells(cel.Row, 2).Value 'récupère en colonne C de p la valeur en colonne B de t
        dest.Offset(0, 3).Value = t.Cells(cel.Row, 3).Value 'récupère en colonne D de p la valeur en colonne C de t
        dest.Offset(0, 4).Value = t.Cells(cel.Row, 10).Value 'récupère en colonne E de p la valeur en colonne J de t
        dest.Offset(0, 5).Value = t.Cells(cel.Row, 32).Value 'récupère en colonne F de p la valeur en colonne AF de t
    End If 'fin de la condition
Next cel 'prochaine cellule de la boucle
End Sub
 

MAGDEM

XLDnaute Nouveau
Re : Remplissage d'un tableau en fonction valeurs de cellule d'une autre feuille

Bonjour Robert,

Merci de cette proposition mais cela ne fonctionne pas.

N'y a-t-il pas possibilité de le faire avec une formule plus classique genre RECHERCHE?

MAGDEM
 

Robert

XLDnaute Barbatruc
Repose en paix
Re : Remplissage d'un tableau en fonction valeurs de cellule d'une autre feuille

Bonjour Magdem, bonjour le forum,

Bonjour Robert,

Merci de cette proposition mais cela ne fonctionne pas.

N'y a-t-il pas possibilité de le faire avec une formule plus classique genre RECHERCHE?

MAGDEM

Forcément ça marche pas car ton fichier exemple et partiquement vide et les conditions ns sont pas respectées. À savoir, la valeur de la cellule de en colonne AG égale à 3 ou 4... Ton fichier ne contient que deux valeurs 0 et 2...
Renvoie un fichier avec quelques données et tu verras que ça marche !
 

MAGDEM

XLDnaute Nouveau
Re : Remplissage d'un tableau en fonction valeurs de cellule d'une autre feuille

Robert,

Voici le fichier avec des références en plus.

MAGDEM
 

Pièces jointes

  • test.xlsm
    90.9 KB · Affichages: 53
  • test.xlsm
    90.9 KB · Affichages: 56
  • test.xlsm
    90.9 KB · Affichages: 52

Robert

XLDnaute Barbatruc
Repose en paix
Re : Remplissage d'un tableau en fonction valeurs de cellule d'une autre feuille

Bonjour Magdem, bonjour le forum,

D'abord tu as mal recopié le code que je t'ai proposé car il manque le End If dans ton nouvel exemple. Ensuite c'est vrai, tu as raison, si la ligne ne contient pas de Nº de Risque (donnée de la colonne A), ça ne marche pas...

Des colonnes A, AE, B, C, J et AF de l'onglet Test, laquelle contient obligatoirement une donnée ?
en fonction de ta réponse, remplace le premier 1 dans la ligne de code :
Code:
Set dest = p.Cells(Application.Rows.Count, 1).End(xlUp).Offset(1, 0)
par le numéro de la colonne qui contient obligatoirement une donnée :
Set dest = p.Cells(Application.Rows.Count, 31).End(xlUp).Offset(1, 0) --> pour AE
Set dest = p.Cells(Application.Rows.Count, 2).End(xlUp).Offset(1, 0) --> pour B
Set dest = p.Cells(Application.Rows.Count, 3).End(xlUp).Offset(1, 0) --> pour C
Set dest = p.Cells(Application.Rows.Count, 10).End(xlUp).Offset(1, 0) --> pour J
Set dest = p.Cells(Application.Rows.Count, 32).End(xlUp).Offset(1, 0) --> pour AF
remplace ensuite les lignes :
Code:
dest.Value = t.Cells(cel.Row, 1).Value
dest.Offset(0, 1).Value = t.Cells(cel.Row, 31).Value
dest.Offset(0, 2).Value = t.Cells(cel.Row, 2).Value
dest.Offset(0, 3).Value = t.Cells(cel.Row, 3).Value
dest.Offset(0, 4).Value = t.Cells(cel.Row, 10).Value
dest.Offset(0, 5).Value = t.Cells(cel.Row, 32).Value
par :
Code:
        p.Cells(dest.Row, 1).Value = t.Cells(cel.Row, 1).Value
        p.Cells(dest.Row, 2).Value = t.Cells(cel.Row, 31).Value
        p.Cells(dest.Row, 3).Value = t.Cells(cel.Row, 2).Value
        p.Cells(dest.Row, 4).Value = t.Cells(cel.Row, 3).Value
        p.Cells(dest.Row, 5).Value = t.Cells(cel.Row, 10).Value
        p.Cells(dest.Row, 6).Value = t.Cells(cel.Row, 32).Value
ça devrait marcher ! Pour éviter de perdre autant de temps, essaie la prochaine fois, de donner un exemple un peu mieux fourni...
 

Robert

XLDnaute Barbatruc
Repose en paix
Re : Remplissage d'un tableau en fonction valeurs de cellule d'une autre feuille

Bonjour Magdem, bonjour le forum,

Tu l'insères ni dans l'un ni dans l'autre mais dans un module standard. Pour faire simple, tu copies le code corrigé, tu ouvres VBE l'éditeur de Visual Basic par [Alt]+[F11]. Là, tu fais Menu Insertion/Module et là, tu colles le code. Pour le lancer, [Alt]+[F8]tu sélectionnes Macro1 dans la liste et tu valides...
Tu peux aussi créer un bouton et lui appliquer le code de la Macro1...
 

Discussions similaires

Statistiques des forums

Discussions
312 209
Messages
2 086 274
Membres
103 168
dernier inscrit
isidore33