Compléter des cellules en fonction d'une autre

Bonjour,

J'ai essayé de trouver la solution à mon problème sur le net mais sans succès...

Je voudrais remplir automatiquement plusieurs cellules d'un fichier Excel en fonction d'une autre cellule.

Je vais essayer d'être un peu plus claire...

Mon classeur a 3 feuilles :

  • la première "Demande ordre de mission" contient un menu déroulant en colonne H. La donnée choisie dans ce menu déroulant détermine les informations contenue dans les colonnes R à Y. Ce sont ces informations là que je souhaiterai completer automatiquement.
  • la deuxième "Liste" contient la liste des données de tous mes menus déroulants. La liste correspondante à la colonne H de la première feuille se trouve en colonne B
  • la troixième "correspondance cellules" contient dans les colonnes B à I les informations que je voudrais mettre automatiquement dans les colonnes R à Y de ma première feuille en fonction de la donnée choisit dans le menu déroulant. En colonne A, j'ai rappelé les données de mon menu déroulant.

J'ai essayé de le faire avec une formule excel mais ça n'a rien donné et puis je voudrais qu'il n'y ait aucune formule sur la feuille "demande ordre de mission"

J'ai donc pensé à une macro...

Pouvez-vous m'aider?

Vous trouverez en pièce jointe mon fichier excel. Ca sera surement plus clair comme ça...

Merci d'avance

Bonjour,

Pour commencer, une simple formule Index() Equiv() fait l'affaire ... ... non ...???

Bonjour,

et merci pour votre aide.

C'est exactement ce que je voulais faire!!

J'aurai juste voulu qu'il n'y ait pas de formule sur la feuille "Demande ordre de mission" mais je vais faire avec!

Merci

Re,

La version améliorée ... sans formule ... ... mais avec macro ...

C'est fantastique!!!!!!!!!!

Merci merci merci!

Maintenant est-il possible de m'expliquer?

J'ai voulu éditer la macro, mais je n'ai rien trouvé et en visual Basic, j'ai trouvé un code mais j'avoue que c'est un peu du chinois.

Explications ou pas, merci quand meme!!!

Re,

Content que cela corresponde à ton attente ...

Merci pour tes chaleureux remerciements ...

Il s'agit d'une macro évènementielle ... qui est placée dans le module de la feuille et qui se déclenche à chaque modification dans ta Colonne H ...

Pour ce qui concerne son mode opératoire, la macro réplique la logique de la formule, en allant rechercher tout d'abord rechercher la ligne qui correspond à la valeur qui vient d'être saisie ...

Et ensuite, à l'aide d'une boucle, la macro renseigne les huit colonnes qui sont dans la même séquence que ta feuille qui contient les infos ...

J'espère que ces explications sont assez claires ...

Bonjour,

J'ai compris le principe de la macro mais je ne parviens pas à l'appliquer sur d'autre colonne....

Je voudrais donc à nouveau abuser de ton aide...

Lors de ma demande initiale, la colonne H (=colonne 8) déclenchait la macro.

Grâce à ta macro, cela remplissait automatiquement les colonnes R à Y de la meme feuille à l'aide des correspondances écrites dans les 8 premières colonnes de la sheet 4 (=correspondence cellule)

Je voudrais utiliser exactement la meme macro pour qu'à partir du choix fait dans la colonne AA (=27) cela remplisse automatiquement la colonne AB (=28) à l'aide des correspondences écrites dans les 2 premières colonnes de la sheet 3 (=taux horaire)

J'ai donc modifié ta macro comme ceci mais ça ne fonctionne pas...

Option Explicit

Private Sub Worksheet_Change(ByVal Target As Range)
Dim x As Integer
Dim i As Integer
If Target.Count > 1 Then Exit Sub
If Target.Column <> 8 Then Exit Sub
If Target.Value = "" Then Exit Sub
x = Application.Match(Target.Value, Sheet4.Range("A1:A20"), 0)

For i = 1 To 8
  Target.Offset(0, 9 + i).Value = Sheet4.Cells(x, 1 + i).Value
Next i

If Target.Column <> 28 Then Exit Sub
If Target.Value = "" Then Exit Sub
x = Application.Match(Target.Value, Sheet3.Range("A1:A20"), 0)

For i = 1 To 2
  Target.Offset(0, 3 + i).Value = Sheet3.Cells(x, 1 + i).Value
Next i

End Sub

Mercipour ton aide.

Bonjour,

Je comprends ta situation ...

Malheureusement, dans les macros évènementielles, il faut une logique légèrement différente de ton essai ...

Dès que j'ai un petit moment et le temps de reprendre ta macro ... je t'envoie la modification...

Re,

Il faudrait tester la macro suivante ...

Private Sub Worksheet_Change(ByVal Target As Range)
Dim x As Integer
Dim i As Integer
If Target.Count > 1 Then Exit Sub
If Target.Column <> 8 And Target.Column <> 27 Then Exit Sub
If Target.Value = "" Then Exit Sub

  Select Case Target.Column
    Case 8
      x = Application.Match(Target.Value, Sheet4.Range("A1:A20"), 0)
      For i = 1 To 8
        Target.Offset(0, 9 + i).Value = Sheet4.Cells(x, 1 + i).Value
      Next i
    Case 27
      x = Application.Match(Target.Value, Sheet3.Range("A1:A20"), 0)
      For i = 1 To 2
        Target.Offset(0, i).Value = Sheet3.Cells(x, 3 + i).Value
      Next i
  End Select
End Sub

ton fichier test joint en Version 2 ...

Bonjour,

En modifiant légèrement ton code, je suis parvenue à appliquer la macro exactement comme je voulais!!

Private Sub Worksheet_Change(ByVal Target As Range)
Dim x As Integer
Dim i As Integer
If Target.Count > 1 Then Exit Sub
If Target.Column <> 8 And Target.Column <> 27 Then Exit Sub
If Target.Value = "" Then Exit Sub

  Select Case Target.Column
    Case 8
      x = Application.Match(Target.Value, Sheet4.Range("A1:A20"), 0)
      For i = 1 To 8
        Target.Offset(0, 9 + i).Value = Sheet4.Cells(x, 1 + i).Value
      Next i
    Case 27
      x = Application.Match(Target.Value, Sheet3.Range("A1:A20"), 0)
      For i = 1 To 2
        Target.Offset(0, i).Value = Sheet3.Cells(x, 1 + i).Value
      Next i
  End Select
End Sub

Merci encore pour ton aide.

Bonjour,

Toutes mes Félicitations pour la modification...!!! ( je n'avais pas totalement saisi les nouvelles colonnes que tu voulais ... )

Merci pour tes très gentils remerciements ...!!!

Rechercher des sujets similaires à "completer fonction"