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

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
michel_m Messages postés 16602 Date d'inscription   Statut Contributeur Dernière intervention   3 314
 
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
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
lermite222 Messages postés 8724 Date d'inscription   Statut Contributeur Dernière intervention   1 191
 
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