Petit problème sur excel VBA

Fermé
Utilisateur anonyme - 11 mai 2010 à 14:08
 Utilisateur anonyme - 13 mai 2010 à 19:53
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

A voir également:

2 réponses

Utilisateur anonyme
13 mai 2010 à 18:15
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 16603 Date d'inscription lundi 12 septembre 2005 Statut Contributeur Dernière intervention 16 décembre 2023 3 310
13 mai 2010 à 19:00
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
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 dimanche 8 avril 2007 Statut Contributeur Dernière intervention 22 janvier 2020 1 190
Modifié par lermite222 le 13/05/2010 à 18:59
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