Microsoft 365 Remplissage automatique conditionnel d'une ligne

nwo

XLDnaute Nouveau
Bonjour à tous,

J'ai la question suivante:
Je suis architecte et cherche à trouver un moyen systématique de remplir un bordereau de portes à partir d'une liste de portes TYPES (lignes 20 à 58 = modèles de base) ayant chacune des caractéristiques différentes (voir exemple de tableau ci-joint). Les bordereaux comportent parfois des centaines de portes et il devient compliqué à un certain stade de toutes les contrôler indépendamment...

Exemple : Si j'écris "25" dans la colonne C de la ligne 1, ... je souhaiterait que les colonnes "I" à "AR" de cette ligne soient automatiquement remplies en fonction des caractéristiques du TYPE 25 décrit dans la ligne 44 ... (voir lignes en jaune fluo dans le tableau)
Ainsi je suis certain que toutes les portes TYPE 25 ont les mêmes caractéristiques et ainsi de suite.

Pouvez-vous m'orienter?

Un grand merci d'avance !
Nicolas
 

Pièces jointes

  • 200327_bordereau_portes_test.xlsx
    285.6 KB · Affichages: 8

fanfan38

XLDnaute Barbatruc
Bonjour
Ci joint ma solution par macro (xlsm)
par formule (xlsx)
A+ François
 

Pièces jointes

  • 200327_bordereau_portes_test.xlsm
    291.4 KB · Affichages: 7
  • 200327_bordereau_portes_test.xlsx
    289.7 KB · Affichages: 8
Dernière édition:

nwo

XLDnaute Nouveau
Merci pour ton aide Fanfan, mais lorsque je double clique sur une des cellules de la colonne C pour examiner la macro... cela fait planter le fichier et XL.
Peux-tu m'expliquer comment reproduire la manip sur d'autres lignes?

Capture.JPG
 

fanfan38

XLDnaute Barbatruc
Ce n'est pas en double cliquant que tu peux voir la macro... (Mais moi ça plante pas dans ce cas)
pour faire fonctionner ik suffit de saisir un chiffre entre 1 et 39 dans la colonne C
Pour voir la macro ou Alt +F11 ou tu clic sur l'onglet (le nom de la feuille) avec le bouton droit de la souris et tu choisi "Visualiser le code"...
VB:
Private Sub Worksheet_Change(ByVal Target As Range)
'contrôle que c'est bien la colonne 3 que la saisie est bien un chiffre de 1 à 39
  If Target.Column <> 3 Then Exit Sub
  If Not IsNumeric(Target.Value) Or Target.Value < 1 Or Target.Value > 39 Then
    MsgBox ("Saisir un chiffre de 1 à 39")
    Exit Sub
  End If
  Dim lig As Integer, i As Integer, l As Integer
  l = Target.Row  'défini la ligne en cours
  lig = Target.Value + 19 'défini la ligne correspondante
  For i = 3 To 43 'boucle sur les colonnes
'si la cellule n'est pas vide copie la cellule
   If Len(Cells(lig, i).Value) > 0 Then Cells(l, i).Value = Cells(lig, i).Value
  Next 'fin de boucle
End Sub
 

Discussions similaires

Réponses
7
Affichages
351

Statistiques des forums

Discussions
315 096
Messages
2 116 173
Membres
112 677
dernier inscrit
Justine11