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 :

cell.offset


Sujet :

Macros et VBA Excel

  1. #1
    Membre confirmé
    Inscrit en
    Mars 2007
    Messages
    59
    Détails du profil
    Informations forums :
    Inscription : Mars 2007
    Messages : 59
    Par défaut cell.offset
    Bonsoir,

    Je rencontre un problème avec un code, que je ne sais résoudre.

    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
    plage = Worksheets("pas par pas").Range("B3:B103")
     
    For Each Cell In plage
     
    Select Case Cell
     
       Case "BS"
     
                temp = Rnd()
                If temp < Cells(3, 3) Then
                Cell.Offset(0, 1).Value = "incapable"
                Else
                Cell.Offset(0, 1).Value = "BS"
                End If
    ............
    Je crois que cela vient de Cell.offset qu'excel ne veut pas.
    Pourriez-vous m'éclairer?

    Merci

    TheRealMike

  2. #2
    Membre chevronné Avatar de drakkar_agfa
    Profil pro
    Inscrit en
    Septembre 2008
    Messages
    618
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : Canada

    Informations forums :
    Inscription : Septembre 2008
    Messages : 618
    Par défaut
    Essais avec ça :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    .Offset(rowOffset:=0, columnOffset:=1)

    Pour moi, ça marche bien comme ça!

  3. #3
    Membre confirmé
    Inscrit en
    Mars 2007
    Messages
    59
    Détails du profil
    Informations forums :
    Inscription : Mars 2007
    Messages : 59
    Par défaut
    Voila ce que j'ai essayé:

    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
    Sub incapacite1()
     
    plage = Worksheets("pas par pas").Range("B3:B103")
     
    For Each Cell In plage
     
    Select Case Cell
     
       Case "BS"
     
                temp = Rnd()
                If temp < Cells(3, 3) Then
                Cell.Offset(rowOffset:=0, columnOffset:=1).Value = "incapable"
                Else
                Cell.Offset(rowOffset:=0, columnOffset:=1).Value = "BS"
                End If
    ...
    mais cela ne marche toujours pas. Je ne vois pas ce qui pourrais clocher, j'ai une erreur d'execution 424...

  4. #4
    Membre Expert
    Avatar de JackOuYA
    Inscrit en
    Juin 2008
    Messages
    1 040
    Détails du profil
    Informations forums :
    Inscription : Juin 2008
    Messages : 1 040
    Par défaut
    bonsoir,

    et c'est censé faire quoi ? et cela fait quoi ?

  5. #5
    Membre confirmé
    Inscrit en
    Mars 2007
    Messages
    59
    Détails du profil
    Informations forums :
    Inscription : Mars 2007
    Messages : 59
    Par défaut
    C'est de la simulation...

  6. #6
    Membre confirmé
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    25
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 25
    Par défaut
    Bonsoir TheRealMike, drakkar_agfa, JackOuYA,

    Pas tout compris non plus... Mais j'imagine qu'en corrigeant d'abord comme ça, ça devrait déjà régler le problème d'erreur 424 :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Set plage = Worksheets("pas par pas").Range("B3:B103")
    Cordialement,

  7. #7
    Membre Expert
    Avatar de JackOuYA
    Inscrit en
    Juin 2008
    Messages
    1 040
    Détails du profil
    Informations forums :
    Inscription : Juin 2008
    Messages : 1 040
    Par défaut
    Citation Envoyé par TheRealMike Voir le message
    C'est de la simulation...
    C'est pas la question !! que doit faire ton code ? que ne fait'il pas ? tu as un message d'erreur .?

  8. #8
    Membre confirmé
    Inscrit en
    Mars 2007
    Messages
    59
    Détails du profil
    Informations forums :
    Inscription : Mars 2007
    Messages : 59
    Par défaut
    Eh... ben je crois l'avoir dit... enfin merci, c'est résolu avec le set!

  9. #9
    Membre confirmé
    Inscrit en
    Mars 2007
    Messages
    59
    Détails du profil
    Informations forums :
    Inscription : Mars 2007
    Messages : 59
    Par défaut
    Euff j'ai changé un peu le code et j'ai encore un problème. Si vous pouviez m'aider encore un peu, s'il vous plait....

    voisi le code :

    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
    Set plage = Worksheets("pas par pas").Range("B3:B103")
     
    For Each cell In plage
     
    Select Case cell
     
       Case "BS"
     
                temp = Rnd()
                taux = Application.WorksheetFunction.VLookup(Worksheets("pas par pas").Range(cell), Worksheets("Loi d'entrée en incap").Range("A:D"), 4, False)
                If temp < taux Then
                cell.Offset(rowOffset:=0, columnOffset:=2).Value = "incapable"
                Else
                cell.Offset(rowOffset:=0, columnOffset:=2).Value = "BS"
                End If
    ...
    le problème vient de "Worksheets("pas par pas").Range(cell)". En fait, je n'arrive pas à récupérer l'adresse de "cell". J'ai essayé cell.address, cell.row, etc, mais cela ne marche pas. Auriez-vous une idée?

    Merci

    theRealMike

  10. #10
    Membre confirmé
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    25
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 25
    Par défaut
    Re,

    Sans aller dans le détail, et puisque nous n'avons pas la totalité du code de ta procédure... la première chose que tu devrais mettre en place dans ton projet, c'est la déclaration de tes variables.

    Visiblement, tu n'as pas l'air de bien en maitriser le type, et ceci explique sans doute cela...

    Je t'ai proposé le "Set" tout à l'heure, car ta variable "Plage" semblait être un objet Range. Si "Plage" est un objet "Range" alors "Cell" (issu de la boucle For Each) est donc lui même un objet "Range" également.

    Déjà, pour éviter tout ambiguité, quand tu veux faire référence à la valeur de la cellule, tu devrais écrire ensuite :
    Ensuite, en continuant dans ton code, on voit déjà que ça coincera là :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    taux = Application.WorksheetFunction.VLookup(Worksheets("pas par pas").Range(cell)...
    "Cell" étant lui-même un objet Range, l'expression "Range(cell)" ne parait guère plausible...

    Avant d'aller plus loin, je te conseillerais donc de faire une petite révision des types de variable et de leur déclaration. Et parmi les documents sur le sujet, notre ami SilkyRoad en a réalisé un très bien fait ICI. Lire notamment le paragraphe sur "Option Explicit", toujours très utile...

    Cordialement,

  11. #11
    Membre confirmé
    Inscrit en
    Mars 2007
    Messages
    59
    Détails du profil
    Informations forums :
    Inscription : Mars 2007
    Messages : 59
    Par défaut
    Bonjour,

    Il est vrai que je ne maitrise pas du tout ce genre de chose. J'ai lu la page citée ci dessus, mais je ne sais pas comment corriger mon code...quelqu'un pourrait-il m'aider?

Discussions similaires

  1. screenshot dans une résolution > a celle affichée
    Par cemoi dans le forum DirectX
    Réponses: 8
    Dernier message: 29/12/2003, 18h16
  2. [CR 8.5] récup d'info et modification de celle-ci
    Par jfphan dans le forum SAP Crystal Reports
    Réponses: 2
    Dernier message: 14/11/2003, 13h07
  3. Qu'est ce qu'un offset
    Par gtr dans le forum Assembleur
    Réponses: 8
    Dernier message: 06/12/2002, 08h53
  4. Sans effet: StringGrid1->Cells[1][1][2] = c ?
    Par Xavier dans le forum C++Builder
    Réponses: 3
    Dernier message: 27/11/2002, 10h32

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