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 :

Variable offset boucle [XL-2003]


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé Avatar de Djromé
    Profil pro
    Inscrit en
    Juillet 2009
    Messages
    172
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2009
    Messages : 172
    Par défaut Variable offset boucle
    Salut les Kracks,

    Pourriez-vous m'indiquer la syntaxe pour faire un offset (dans une boucle) avec une variable prédéfinie (Habituellement Activecell mais là, il me bloque!):

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    strDestinataire = strDestinataire.Offset(1, 0).Value
    D'avance merci

  2. #2
    Expert confirmé Avatar de jfontaine
    Homme Profil pro
    Contrôleur de Gestion
    Inscrit en
    Juin 2006
    Messages
    4 756
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Sarthe (Pays de la Loire)

    Informations professionnelles :
    Activité : Contrôleur de Gestion

    Informations forums :
    Inscription : Juin 2006
    Messages : 4 756
    Par défaut
    Bonjour,

    StrDestinataire étant probablement une variable de type String, elle ne peut etre utilisée comme si elle était de type Range (A moins que le préfixe Str ne signifie pas String )

    Ci dessous un code qui boucle sur 10 lignes en partant de la cellule déclarée en Rg
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    Dim Rg As Range
    Dim i As Long
     
    Set Rg = Range("B5")
     
    For i = 0 To 10
     
        MsgBox Rg.Offset(i, 0).Value
     
    Next i

  3. #3
    Membre Expert Avatar de Jean-Pierre49
    Homme Profil pro
    Retraité
    Inscrit en
    Juillet 2007
    Messages
    659
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 70
    Localisation : France, Maine et Loire (Pays de la Loire)

    Informations professionnelles :
    Activité : Retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Juillet 2007
    Messages : 659
    Par défaut
    Bonjour

    Exemple

    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
    Dim Cellule As Range
    Dim compA As Long
     
    Set Cellule = Range("A1") ‘ par exemple
     
    Pour les colonnes
     For CompA = 1 To 20 ‘ par exemple
    Cellule.Offset(0, CompA).Value = "X"
    Next compA
     
    Pour les Lignes
     
    For CompA = 1 To 20 ‘ par exemple
    Cellule.Offset(CompA, 0).Value = "X"
    Next compA
    bon courage

    Edit: Bonjour Jérôme, je n'avais pas vu ta réponse avant d'envoyer

  4. #4
    Membre confirmé Avatar de Djromé
    Profil pro
    Inscrit en
    Juillet 2009
    Messages
    172
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2009
    Messages : 172
    Par défaut
    Merci à vous deux,

    Effectivement, elle était mal déclarée!

    Comme je l'aperçois sur vos deux codes, j'ai oublié de faire un SET au préalable pour pouvoir ensuite utiliser OFFSET...

    Au plaisir!

  5. #5
    Membre confirmé Avatar de Djromé
    Profil pro
    Inscrit en
    Juillet 2009
    Messages
    172
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2009
    Messages : 172
    Par défaut
    Salut les Kracks,

    Ci-dessous un code qui envoi automatiquement par outlook les messages(C6:C40) et adresses (F6:F40) situées dans des cellules excel avec pour seul contrainte la validation du message de Sécurité (d'ailleurs si vous avez un code pour l'enlever...je prends).

    Mon problème vient de la boucle peut-être?
    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
    Sub ContentCellxlsbyOutlook()
     
        Dim OutApp As Object
        Dim OutMail As Object
     
    Dim strCCDestinataire, strSubject, strTextBody As variant
    Dim strDestinataire As Range
     
    strCCDestinataire = "boss@msn.com;copain2@hotmail.com" 
    'toujours les mêmes destinataires
    Set strDestinataire = Range("F5")
    'F5 = entête de la colonne comprenant les celulles avec les addresses emails  
     
    'Temps que la cellule en dessous du destinataire n'est pas vide exécuter...
    Do While Not (IsEmpty(strDestinataire))
     
    strDestinataire = strDestinataire.Offset(1, 0) 'F5 devient F6 
    strSubject = "Mon sujet - " & strDestinataire.Offset(0, -3).Value 'en C6 numéro à ajouter dans le sujet
    strTextBody = 	"Dear Sir or Madam," _vbcrlf 'voir si ça marche car texte long à mettre sur plusieurs lignes
    		& "blablabla"_vbcrlf
    		& "blablabla"
     
        Set OutApp = CreateObject("Outlook.Application")
        Set OutMail = OutApp.CreateItem(0)
     
        On Error Resume Next
     
        With OutMail
            .To = strDestinataire
            .CC = strCCDestinataire
            .BCC = "" 'vide
            .Subject = strSubject
            .Body = strTextBody
            .Display   
            .Send
        End With
        On Error GoTo 0
        Set OutMail = Nothing
        Set OutApp = Nothing
    Loop
    End Sub
    D'avance...

  6. #6
    Expert confirmé Avatar de jfontaine
    Homme Profil pro
    Contrôleur de Gestion
    Inscrit en
    Juin 2006
    Messages
    4 756
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Sarthe (Pays de la Loire)

    Informations professionnelles :
    Activité : Contrôleur de Gestion

    Informations forums :
    Inscription : Juin 2006
    Messages : 4 756
    Par défaut
    re,

    Tu pourrais peut etre mettre l'instanciation de la variable OutApp hors de la boucle DO WHILE.
    Cela éviterait l'ouverture et la fermeture de l'application a chaque tour

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

Discussions similaires

  1. [SHELL] Variable dans boucle for
    Par magicwill dans le forum Linux
    Réponses: 6
    Dernier message: 11/08/2007, 11h31
  2. generation variable par boucle
    Par angel46 dans le forum Langage
    Réponses: 6
    Dernier message: 30/04/2007, 09h34
  3. [FLASH 8] Problème nom variable et boucle for
    Par jbidou88 dans le forum Flash
    Réponses: 10
    Dernier message: 23/03/2007, 11h36
  4. Affectation à la variable de boucle FOR 'i'
    Par nek_kro_kvlt dans le forum Delphi
    Réponses: 3
    Dernier message: 11/10/2006, 17h03
  5. Déclaration de variables en boucle
    Par THE_VIP dans le forum Général Python
    Réponses: 4
    Dernier message: 22/09/2006, 21h58

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