Petit problème sur excel VBA

Utilisateur anonyme -  
 Utilisateur anonyme -
Bonjour,

J'ai un petit problème (de débutant que je suis) sur excel VBA.
Voici un code qui doit :
- Repérer en colonne 2 les valeurs égales à 1
- Copier le texte correspondant en colonne 1
- Créer une nouvelle colonne F en feuille 2 lorsque l'on a une valeur égale à 1 en colonne 2
- Coller le texte copié en F2 dans cette nouvelle colonne

Mais voilà, ça ne marche pas...
- Lorsque j'ai une valeur qui vaut 1, une nouvelle colonne est bien créée, ça c'est OK
- Mais lorsque j'en ai plusieurs, il ne me crée qu'une colonne pour autant
- De plus il ne colle pas de suite le texte copié (je pense que c'est parce que je lui demande de coller quelquechose dans une colonne que je suis en train de créer, mais comment faire ?)

Voilà le code :
Sub Phasesducycledevie_Bouton1_QuandClic()
Dim f As Integer
For f = 1 To 100
If Cells(f, 2).Value = 1 Then
Sheets("Tableau Final").Range("F2").EntireColumn.Insert Shift:=xlToLeft

Sheets("Phases du cycle de vie").Select
    Cells(f, 1).Select
    Selection.Copy
    Sheets("Tableau final").Select
    Range("F2").Select
    ActiveSheet.Paste
    
End If
Next



End Sub


Merci d'avance

2 réponses

  1. Utilisateur anonyme
     
    Salut,

    ton programme est presque bon. c'est juste que tu as seulement mis Next!
    il faut mettre Next f.

    juste comme "conseil" ou remarque en tout cas, si tu veux éviter d'avoir les animations lors de la macro, tu peux ajouter en début de prog Application.ScreenUpdating = False
    j'y ai pensé en voyant toutes les animations et le "tremblement" que ça génère si tu a pas mal de 1!
    enfin ça, c'est comme tu le sens ^^
    0
    1. michel_m Messages postés 18903 Date d'inscription   Statut Contributeur Dernière intervention   3 320
       
      Bonjour

      essaies cette proc
      Sub ccm()
      Dim derlig As Byte, cptr As Byte, cptr_t As Byte
      Dim tablo
      
      ReDim tablo(0)
      derlig = Range("B250").End(xlUp).Row
      With Sheets("Phases du cycle de vie")
          For cptr = 1 To derlig
              If .Cells(cptr, 2) = 1 Then
                  tablo(cptr_t) = .Cells(cptr, 1)
                  cptr_t = cptr_t + 1
                  ReDim Preserve tablo(cptr_t)
              End If
          Next
      End With
      
      Sheets("Tableau Final").Range("F2").Resize(1, UBound(tablo) + 1) = tablo
      End Sub


      remarque;
      ton programme est presque bon. c'est juste que tu as seulement mis Next!
      il faut mettre Next f.

      MAIS NON, VOYONS!!!
      0
    2. Utilisateur anonyme
       
      Salut michel,

      désolé, je commence seulement en macro.
      je voulais juste aider. désolé. pas besoin de me "crier" dessus, façon de parler (majuscules, gras!).
      pourtant je l'ai essayé et il a très bien fonctionné le programme! je comprends pas alors!?
      0
  2. lermite222 Messages postés 9042 Statut Contributeur 1 199
     
    Bonjour,
    Remplace ta ligne..
    Sheets("Tableau Final").Range("F2").EntireColumn.Insert Shift:=xlToLeft

    par
    Sheets("Tableau Final").cells(1, f + 1).EntireColumn.Insert Shift:=xlToLeft

    A+

    L'expérience instruit plus sûrement que le conseil. (André Gide)
    Si tu te cogne à un pot et que ça sonne creux, c'est pas forcément le pot qui est vide. ;-)(Confucius)
    0