Recopier une ligne avec des formules sur une feuille/lignes différentes

Bonjour tout le monde,

J'ai cherché dans les forums afin de trouver une solution à mon problème mais je n'arrive pas à le résoudre.

Voila j'ai un tableau de gestion pour des forets de perçage et j'aimerais faire un suivi a chaque fois que nous changeons ces forets pour les remplacer par ceux d'un diamètre différent ( en gros je crée un mouvement avec une ligne a chaque fois qu'il y a un évènement : casse ou changement de diamètre)

Mon problème c'est que sur la ligne que VBA va rechercher en référence il y a des formules et lorsque ces formules sont copiées sur la ligne cible, elle gardent le numéro de la ligne de référence.

J'ai essayer d'écrire le code avec un collage spécial mais le débogueur me dit : Variable non définie

Je vous joint le fichier avec ce post et je vous met le code.

Option Explicit

Private Sub Worksheet_Change(ByVal Target As Range)

Dim Plage As Range
Dim cel As Range
Dim Col As Long
Dim maligne As Long

'seulement si modif dans une seule cellule et sur la colonne A
If Target.Count > 1 Then Exit Sub
If Target.Column > 1 Then Exit Sub

With Worksheets("LISTE")

'défini la plage sur la colonne A de la feuille "Base de données" à partir de A2
Set Plage = .Range(.Cells(2, 1), .Cells(.Rows.Count, 1).End(xlUp)):

'effectue la recherche...
Set cel = Plage.Find(Target.Value, , xlValues, xlWhole)

'...si trouvé, défini le nombre de colonnes à récupérer par rapport aux entêtes (ligne 1)
'et inscrit les valeurs dans les cellules de droite
If Not cel Is Nothing Then

maligne = ActiveCell.Row

Col = .Cells(1, .Columns.Count).End(xlToLeft).Column
Target.Resize(1, Col).Value = cel.Resize(1, Col).Value
Target.Resize(1, Col).Formula = cel.Resize(1, Col).Formula

End If

End With

End Sub

Est ce que vous auriez une solution a mon problème s'il vous plait je vous remercie.

Bonjour,

Il faut supprimer la ligne suivante: "Target.Resize(1, Col).Formula = cel.Resize(1, Col).Formula"

Votre code agencé différemment:

Private Sub Worksheet_Change(ByVal Target As Range)
    Dim Plage As Range
    Dim cel As Range
    Dim Col As Long

    On Error GoTo Sortie
    Application.EnableEvents = False
    'seulement si modif dans une seule cellule et sur la colonne A
    If Target.Count = 1 And Target.Column = 1 Then
        With Worksheets("LISTE")
            'défini la plage sur la colonne A de la feuille "Base de données" à partir de A2
            Set Plage = .Range(.Cells(2, 1), .Cells(.Rows.Count, 1).End(xlUp)):

            'effectue la recherche...
            Set cel = Plage.Find(Target.Value, , xlValues, xlWhole)

            '...si trouvé, défini le nombre de colonnes à récupérer par rapport aux entêtes (ligne 1)
            'et inscrit les valeurs dans les cellules de droite
            If Not cel Is Nothing Then
                Col = .Cells(1, .Columns.Count).End(xlToLeft).Column
                Target.Resize(1, Col).Value = cel.Resize(1, Col).Value
            End If
        End With
    End If
Sortie:
    Application.EnableEvents = True
End Sub

Cdlt

Bonjour à tous

Ton fichier interroge :

  • pourquoi ne pas utiliser des tableau structurés ? Cela fait 20 ans qu'ils existent dans Excel et évitent (entre autres) des calculs de plages avec End(xlUp) et qui correctement formulés avec des formules de type tableau structurés supprimeraient le problème.
  • La logique du code comme des formules posent question :
    • dans le code c'est la saisie dans BDD qui pilote la copie depuis LISTE donc pas sûr de comprendre le process
  • dans les formules
    • si FORET 1, FORET 2, FORET 3, FORET 4 sont la réplique de COMPTEUR la moyenne n'a pas de sens
    • la fonction AUJOURDHUI() va changer chaque jour donc tu perds l'historique

Bonjour,

J'ai copié/collé le code et lorsque j'appelle la ligne ça ne me copie pas les formules les cases restent vides, or j'aimerais importer les formules en même temps que les données.

Merci

Bonjour,

  • si FORET 1, FORET 2, FORET 3, FORET 4 sont la réplique de COMPTEUR la moyenne n'a pas de sens
  • la fonction AUJOURDHUI() va changer chaque jour donc tu perds l'historique

En fait on utilise 4 forets en même temps pour percer donc on est d'accord que si ils sont identique a "compteur" ça n'a pas d'intéret sauf si un foret casse et que je le remplace par un neuf alors ce compteur là repart a 0 et ça nous évite de changer un lot complet alors qui il a au milieu des forets qui sont encore bons

Oui la fonction AUJOURDHUI me pose problème, j'aimerais que la date du jour soit exporté mais reste figée dans mes mouvement afin que je puisse conserver mon historique

En fait la feuille liste sert de base de données a BDD par ce que en fonction du scénario on va chercher une ligne différente. Ce tableau est utilisé avec un complément pour me faire gagner du temps dans mes taches quotidienne en "préremplissant" un maximum mes données pour m'éviter de faire de la saisie.

- Je flash un QR code qui renvoie a la case ID et préremplit automatiquement ma ligne en fonction de la boite et du mouvement associé. j'ai juste la case compteur a remplir et éventuellement remplacer le compteur du foret qui à cassé par "0"

RE

Créer un table avec des lignes parfois formulées parfois saisies en fonction des circonstances n'est pas une bonne pratique : un jour ou l'autre on se retrouve avec des incohérences.

Il me semble si on saisit, manuellement ou par un lecteur de code, la colonne ID, que de simples formules allant récupérer les données dans BDD suffiraient

Il faudrait décrire le principe sur 2 ou 3 événements avec un exemple concret car avec ta fonction aujourdhui() j'ai du mal à comprendre tes étapes de suivi que tu décrivais comme le besoin

Re,

Créer des formules directement sous un tableau me semble pas forcément être un gain de temps, je m’explique :

dans ces circonstances des relevés sont fait 1 fois par jour, si par erreur on flash le mauvais QR code ( que ça sélectionne une situation différente de celle que l’on veut) il faudrait soit revenir en arrière soit effacer la ligne et refaire glisser les formules qui auront disparues, en plus est cela implique soit de dupliquer au fur et à mesure soit entrer d’un coup pas loin de 1000 lignes pré remplies de formules d’un coup (et ça c’est seulement pour un relevé sur 9 mois).

je le sais par ce que je fonctionne déjà avec un tableau de ce type, et je me suis rendu compte que la principale erreur est humaine, plus on évitera les saisies et les manipulations de formules moins on perds de temps ( que ce soit en les faisant glisser ou en les copiant)

si j’arrive à compléter le code, le travail sera à 90% automatisé par VBA ce qui même en cas d’erreur on a déjà moins de chances de se tromper ( au pire on efface la ligne et VBA recopiera les formules )

Mon but une fois le code terminé est de pré remplir mes cellules et d’ouvrir un formulaire pour entrer un compteur et de simplement cocher les forêts qui ont été cassés pour les mettre à 0, plus aucune manipulation n’aura lieu dans ce tableau.

sachant que ensuite ces données brut sont récoltées par un tableau croisé dynamique afin de créer une synthèse par machine et sur une période demandée automatiquement ( restera à régler le petit soucis de date) 😊

RE

je ne vois pas où tu vois évoqué l'idée de mettre des formules sous le tableau, ce qui n'aurait d'ailleurs aucun sens...

Et non justement dans un tableau structuré les formules ne disparaissent pas quand on supprime une ligne car elles sont mémorisées pour chaque colonne formulée

C'est un dialogue de sourds...

Tu sembles monter une usine à gaz là où Excel sait nativement faire les choses si on l'utilise correctement

Et les dates ne sont pas un détail quand on veut justement faire du suivi...

Re,

Je n’ai jamais dis que les dates sont un détail, merci quand même pour le temps que tu as pris à me répondre ☺️ malheureusement le problème est toujours le même, le fichier n’est pas opérationnel 😊 je tenterais le tableau lundi, l’heure est au repos pour l’instant 😉

Bonjour tout le monde,

78Chris j'ai suivis ton conseil et ça marche ! (Je me suis bien amusé avec les fonctions RECHERCHEV) mais le résultat est là on a un tableau qui crée des données automatiquement ! Le tout sans passer par la macro.

Du coup ce sujet n'a pas lieu, je le marque quand même comme résolu.

Merci à vous tous pour ce coup de main.

Bonne journée

Rechercher des sujets similaires à "recopier ligne formules feuille lignes differentes"