Autofill et Range variable

valor -  
Ziggy69 Messages postés 9 Statut Membre -
Bonjour à tous,



Merci d'avance :)

6 réponses

  1. Ziggy69 Messages postés 9 Statut Membre 2
     
    Pour les range je préfére faire comme ceci. J'ai aussi ajouté LIGNE + 5 car s'il veut 5 éléments et qu'on part de la ligne 5, il en aura juste 1 :).
    LIGNE = InputBox("Combien de lignes souhaitez vous?", , 10)
        VALEUR_INI_LIGNE = InputBox("Quelle est la 1ère valeur de ces lignes?", , 0)
        PAS_L = InputBox("Quel est le pas?", , 1)
    
        Cells(5, 2) = VALEUR_INI_LIGNE
        Cells(6, 2) = VALEUR_INI_LIGNE + PAS_L
        Range("B5:B6").Select
        Selection.AutoFill Destination:=Range("B5:B" & LIGNE + 5), Type:=xlFillDefault
    
    0
  2. valor
     
    Aaah nikel ça marche comme sur des roulettes, j'avais essayé des méthodes trop complexes, alors que la solution était très simple!

    J'ai essayé de transposer cette méthode pour la réalisation des colonnes :

    OLONNE = InputBox("Combien de colonnes voulez vous?", , 10)
        VALEUR_INI_COLONNE = InputBox("Quelle est la 1ère valeur de ces colonnes?", , 1)
        PAS_C = InputBox("Quel est le pas?", , 1)
    
     Cells(4, 3) = VALEUR_INI_COLONNE
        Cells(4, 4) = VALEUR_INI_COLONNE + PAS_C
        Range("C4:D4").Select
     Selection.AutoFill Destination:=Range("C4:?????"), Type:=xlFillDefault
    
    


    mais cette fois-ci, le paramètre variable est une lettre et non un chiffre. Comment se dépatouiller?

    Merci encore :)
    0
  3. lermite222 Messages postés 9042 Statut Contributeur 1 199
     
    Bonjour,
    Une idée !!
    Sub EcritSerie() 
    Dim SourcePlage As Range 
    Dim DestPlage As Range 
    Dim SourceIncr As Range 
    Dim Ligne As Long, Col As Integer, NbLigne As Long, NbCol As Integer 
    Dim ValeurInitial As Integer, PasLigne As Integer 
       ' NbLigne = InputBox("Combien de lignes souhaitez vous?", , 10) 
       ' NbCol = InputBox("Combien de colonnes souhaitez vous?", , 5) 
       ' ValeurInitial = InputBox("Quelle est la 1ère valeur de ces lignes?", , 0) 
       ' PasLigne = InputBox("Quel est le pas?", , 1) 
    'Valeur pour les test.. à supprimer 
    NbLigne = 20 
    NbCol = 5 
    ValeurInitial = 5 
    PasLigne = 3 
        With Sheets("Feuil1") 
            Set SourcePlage = .Range(Cells(2, 2), Cells(2, NbCol + 1)) 
            Set SourceIncr = .Range(Cells(3, 2), Cells(3, NbCol + 1)) 
            Set DestPlage = .Range(Cells(2, 2), Cells(NbLigne + 1, NbCol + 1)) 
    
        SourcePlage = ValeurInitial 
        SourceIncr = ValeurInitial + PasLigne 
        .Range(Cells(2, 2), Cells(3, NbCol + 1)).AutoFill Destination:=DestPlage, Type:=xlFillSeries
        End With 
    End Sub

    A+
    L'expérience instruit plus sûrement que le conseil. (André Gide)
    Si tu te cognes à un pot et que ça sonne creux, c'est pas forcément le pot qui est vide. ;-)(Confucius)
    0
  4. lermite222 Messages postés 9042 Statut Contributeur 1 199
     
    Ouppps, pas vu les autres postes...
    Pour exécuter avec des lettres je pense pas que ce soit possible, faudra faire autrement.
    0
  5. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  6. valor
     
    J'ai essayé ça :
        
    
        Dim I As Integer
        Dim COLONNE As Integer
        Dim VALEUR_INI_COLONNE As Integer
        Dim PAS_C As Integer
        I = 5
        
        Cells(4, 3) = VALEUR_INI_COLONNE                    'Entre la 1ère valeur dans la 2eme colonne
        Cells(4, 4) = VALEUR_INI_COLONNE + PAS_C            'Entre la 2ème valeur (valeur1 + pas) dans la 3ème colonne du tableau
        
        
        Range("C4").Select
        ActiveCell.FormulaR1C1 = VALEUR_INI_COLONNE
        Range("D4").Select
        ActiveCell.FormulaR1C1 = VALEUR_INI_COLONNE + PAS_C
        Range("E4").Select
        ActiveCell.FormulaR1C1 = "=RC[-2]+ PAS_C"
    
        For I = 5 To COLONNE + 1
        Cells(4, I).AutoFill Destination:=Range(Cells(4, I), Cells(4, I + 1)), Type:=xlFillDefault
        Next I
    
    


    Si le 1er chiffre est 1 et le pas est 1, j'obtiens C4=1 D4=2 (jusque là tout va bien) mais pour les autre cellules E4 F4 etc... j'obtiens #NOM?
    Je pense que le problème viens de
    ActiveCell.FormulaR1C1 = "=RC[-2]+ PAS_C"
    mais je ne trouve pas :s
    0
  7. Ziggy69 Messages postés 9 Statut Membre 2
     
    J'ai pas tout lu mais effectivement ActiveCell.FormulaR1C1 = "=RC[-2]+ PAS_C" ne peut pas marcher car quand tu es entre " ", c'est un string et PAS_C est un integer, il te faut donc faire de la concaténation de chaine avec &. Ici, ça donne :
    ActiveCell.FormulaR1C1 = "=RC[-2]+" & PAS_C
    


    Je pense que ça doit marcher.
    0