IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Macros et VBA Excel Discussion :

[VBA-E]selection de cellule


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Étudiant
    Inscrit en
    Avril 2007
    Messages
    22
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2007
    Messages : 22
    Par défaut [VBA-E]selection de cellule
    bonjour a tous
    je viens de mettre a VBA mais j'ai quelques difficultees
    voila mon probleme
    j'utilise des fonction que j'ai charger d'une macro complementaire appeler xnumbers qui me permettent de faire des interpolations, des spectre d'amplitude....
    je les utilise de cette maniere

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Range("E2:E33").Select 
    Selection.FormulaArray = "=FracInterpcoef(B2:B33,C2:C33)"
    FracInterpcoef est la fonction que je veux utiliser
    il met le resultat dans E2..E33
    ce programme marche avec un tableau predefini de 32 lignes
    j'aimerai le faire fonctionner avec un nbre de ligne calculer auparavant et stocker dans une variable nbrpt

    je vous remerci de votre attention

  2. #2
    Membre éprouvé
    Inscrit en
    Juillet 2005
    Messages
    141
    Détails du profil
    Informations forums :
    Inscription : Juillet 2005
    Messages : 141
    Par défaut
    Bonjour,
    Pour que l'on puisse t'aider, il faudrait que tu nous passes le code associée à cette fonction que l'on voit comment elle marche
    Et Que fait-elle?

    rémi

  3. #3
    Membre averti
    Profil pro
    Étudiant
    Inscrit en
    Avril 2007
    Messages
    22
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2007
    Messages : 22
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    Function FracInterpCoef(xi, yi, Optional DgtMax)
    'returns the coefficients of continue fraction interpolation
    'y = a0 + (x-x1)/(a1+(x-x2)/(a2+(x-x3)/(a3+...)))
    Const tiny = 10 ^ -15
    Dim vx(), vy(), coeff
    If IsMissing(DgtMax) Then DgtMax = 0
    If DgtMax = 0 Then
        On Error GoTo Error_Handler
        LoadVector vx, xi, nx
        LoadVector vy, yi, ny
        If nx <> ny Then FracInterpCoef = "?": Exit Function
        Cont_Fraction_Coeff vx, vy, coeff, tiny
        FracInterpCoef = PasteVector_(coeff)
    Else
        FracInterpCoef = xFract_Interp_Coef(xi, yi, DgtMax)
    End If
    Exit Function
    Error_Handler:
    FracInterpCoef = "?"
    End Function
     
     
     
    Sub LoadVector(vector, obj, n, Optional opt_base)
    'Trasform something (?!) (range, matrix, vector, etc.) into vector
    'modified 28-9-02
    If IsMissing(opt_base) Then opt_base = 1
    If IsObject(obj) Then
        'Vector is selected range
        Dim area As Range
        Set area = obj
        If area.Columns.Count = 1 Then
            rows_max = ActiveSheet.Rows.Count
            n = area.Cells.Count
            k = 0
            If n = rows_max Then
            'full column selected. Example: (A:A)
                n = area.End(xlDown).row
                If area.Cells(2) = "" And n = rows_max Then n = 1                 'empty column
                'eliminate title cell
                If xIsNumeric(area.Cells(1)) = 0 Then
                    n = n - 1: k = 1
                End If
            End If
            If n < 1 Then Exit Sub
            tmp = area
            ReDim vector(opt_base To n + opt_base - 1)
            If n = 1 Then       'bug for one cell selected. thanks to David Sloan 28-9-02
                vector(opt_base) = tmp
            Else
                For i = 1 To n
                    vector(i + opt_base - 1) = tmp(i + k, 1)
                Next i
            End If
        Else
            col_max = ActiveSheet.Columns.Count
            n = area.Cells.Count
            k = 0
            If n = col_max Then
            'full row selected. Example: (2:2)
                n = area.End(xlToRight).Column
                If area.Cells(2) = "" And n = col_max Then n = 1
                'eliminate title cell
                If xIsNumeric(area.Cells(1)) = 0 Then
                    n = n - 1:  k = 1
                End If
            End If
            If n < 1 Then Exit Sub
            tmp = area
            ReDim vector(opt_base To n + opt_base - 1)
            For i = 1 To n
                    vector(i + opt_base - 1) = tmp(1, i + k)
            Next i
        End If
     
    ElseIf IsMatrix(obj) Then
        'check dimension
        If UBound(obj, 1) > UBound(obj, 2) Then
            'vector column
            n = UBound(obj, 1)
            ReDim vector(opt_base To n + opt_base - 1)
            For i = 1 To n: vector(i + opt_base - 1) = obj(i, 1): Next
        Else
            'vector row
            n = UBound(obj, 2)
            ReDim vector(opt_base To n + opt_base - 1)
            For i = 1 To n: vector(i + opt_base - 1) = obj(1, i): Next
        End If
    ElseIf IsVector(obj) Then
            'true vector (finally!)
            n = UBound(obj)
            ReDim vector(opt_base To n + opt_base - 1)
            For i = 1 To n: vector(i + opt_base - 1) = obj(i): Next
    Else
           n = 1 'a single number probably  29-6-2003 VL
           ReDim vector(opt_base To n + opt_base - 1)
           vector(1 + opt_base - 1) = obj
    End If
     
    End Sub



    personelment je ne comprend pas grand chose

  4. #4
    Membre éprouvé
    Inscrit en
    Juillet 2005
    Messages
    141
    Détails du profil
    Informations forums :
    Inscription : Juillet 2005
    Messages : 141
    Par défaut
    Déja si tu pouvais baliser ton code ca serait plus lisible
    sinon je viens de regarder rapidement et j'ai rien vu qui limitait l'action du prog à 32 lignes maintenant, il manque certaines fonctions:
    Cont_Fraction_Coeff et PasteVector_

    du coup j'aurais tendance à dire que pour t'en servir si t'a calculé le nbre de ligne dans nbrpt et en considérant que tes 2 plages (x et y)sont bien en colonne 2 et3 et que les tableau commencent à la ligne 2 tu écris ca:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Range("E2:E" & 2+nbrpt).Select 
    Selection.FormulaArray = "=FracInterpcoef(B2:B" & 2+nbrpt",C2:C"& 2+nbrpt")"
    rémi

  5. #5
    Membre averti
    Profil pro
    Étudiant
    Inscrit en
    Avril 2007
    Messages
    22
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2007
    Messages : 22
    Par défaut
    merci beaucoup
    ce que tu m'as donne va enormenent me servir
    la selection des cases marche bien seulement il ne compremd pas la fonction
    il me dit qu'il y a une erreur de syntaxe en me selectionant toute la ligne
    je ne vois pas d'ou vient l'erreur

  6. #6
    Membre éprouvé
    Inscrit en
    Juillet 2005
    Messages
    141
    Détails du profil
    Informations forums :
    Inscription : Juillet 2005
    Messages : 141
    Par défaut
    oups c moi qui ai fait une erreur met ca et dis moi si ca marche:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Range("E2:E" & 2+nbrpt).Select 
    Selection.FormulaArray = "=FracInterpcoef(B2:B" & 2+nbrpt & ",C2:C" & 2+nbrpt & ")"
    rémi

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [VBA-E] - Selection automatique Cellules apres des tris
    Par michel2662 dans le forum Macros et VBA Excel
    Réponses: 5
    Dernier message: 17/04/2007, 10h21
  2. [VBA-E]Selection plage de cellules variable
    Par julien5 dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 23/05/2006, 14h51
  3. [VBA-E]deplacer une selection de cellules
    Par richou dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 27/03/2006, 12h50
  4. [VBA-E]selection de plusieurs cellules
    Par SekanS dans le forum Macros et VBA Excel
    Réponses: 7
    Dernier message: 22/03/2006, 18h28
  5. [VBA-E]Interdire la selection de cellule dans une feuille
    Par Tartenpion dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 09/03/2006, 23h24

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo