Formule ,macro??

Résolu
xav37300 Messages postés 52 Statut Membre -  
eriiic Messages postés 24581 Date d'inscription   Statut Contributeur Dernière intervention   -
Bonjour,

J'aurais besoin de votre aide afin de gagner du tps sur un fichier. En effet,je voudrais automatiser une donnée afin que celle ci s'ajoute directement.
Je vous fais suivre le fichier afin que cela soit plus explicite (il s'agit juste d'une partie )

https://www.cjoint.com/?DACrQW9f0pK

Merci de votre aide

2 réponses

  1. eriiic Messages postés 24581 Date d'inscription   Statut Contributeur Dernière intervention   7 281
     
    Bonjour,

    une possibilité :
    Sub completeCol()
        Dim c As Range
        For Each c In Selection
            If c = "" Then c = c.Offset(-1)
        Next c
    End Sub 

    Sélectionner la plage à compléter et lancer la macro.

    eric
    0
    1. xav37300 Messages postés 52 Statut Membre
       
      Merci beaucoup cela fonctionne tres bien
      Par contre il n'est pas possible d'ajouter la colonne (avec ligne début tableau jusqu'à dernière linge) dans la macro sans avoir à la sélectionner?
      Je sais j'en demande bcp!!!

      Mais merci qd même
      0
    2. eriiic Messages postés 24581 Date d'inscription   Statut Contributeur Dernière intervention   7 281
       
      Oui c'est possible, en supposant que ton tableau démarre en ligne 7 :
      Sub completeCol()
      Dim c As Range
      Application.ScreenUpdating = False
      For Each c In [A7].Resize(Cells(Rows.Count, 2).End(xlUp).Row - 6)
      If c = "" Then c = c.Offset(-1)
      Next c
      End Sub
      Je me base sur la colonne Date pour détecter la dernière ligne. Elle est sensée être remplie jusqu'au bout.
      Si tu as beaucoup de lignes (plusieurs milliers) et que c'est à faire régulièrement on peut faire plus rapide.

      eric
      0
    3. xav37300 Messages postés 52 Statut Membre
       
      Merci beaucoup Eric
      Par contre tu dis que l'on peut faire plus rapide cela m'intéresse!
      0
    4. eriiic Messages postés 24581 Date d'inscription   Statut Contributeur Dernière intervention   7 281
       
      Bonjour,

      combien de lignes as-tu ?
      Sur mon micro, qui n'est pas récent, ça prend 1.2s pour 6500 lignes, pas le temps de prendre un café...
      Mais bon, on va dire que c'est pour l'exercice :
      Sub completeCol()
      Dim t As Single
      Dim derlig As Long, lig As Long, data As Variant
      't = Timer
      Application.ScreenUpdating = False
      derlig = Cells(Rows.Count, 2).End(xlUp).Row
      data = [A7].Resize(derlig - 6, 1)
      For lig = 1 To UBound(data)
      If data(lig, 1) = "" Then data(lig, 1) = data(lig - 1, 1)
      Next lig
      [A7].Resize(UBound(data), UBound(data, 2)) = data
      Application.ScreenUpdating = True
      'MsgBox Timer - t
      End Sub
      Toujours pour 6500 lignes on passe à 0.055s (x22)

      eric
      0
    5. xav37300 Messages postés 52 Statut Membre
       
      Merci eric c'est super tout a fait ce que je voulais
      0
  2. PHILOU10120 Messages postés 6463 Date d'inscription   Statut Contributeur Dernière intervention   835
     
    Bonjour

    Avec une formule en E7 mettre ceci et la tirer vers le bas avec la poignée de recopie

    =SI(A7>0;A7;A6)
    0
    1. xav37300 Messages postés 52 Statut Membre
       
      La formule fonctionne très bien s'il y a 2 tableaux or la, il n" y en a qu'un en fait le deuxième correspond au résultat que je voudrais obtenir
      0