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 boucle for - problème incrémentation [XL-2003]


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
    Inscrit en
    Juillet 2012
    Messages
    53
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2012
    Messages : 53
    Par défaut VBA boucle for - problème incrémentation
    Bonjour je souhaite sur une colonnes de 7 lignes mettre des valeurs en fonction de la colonne précédente

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    Sub loli()
    Dim b As Range
     
    For i = 3 To 10
    b = Range("Gi").Value
    If ActiveCell.Offset(, -1).Select = "x" Then
    c = "y"
    Else
    c = "z"
    End If
    Next
    End Sub
    Mais il ne comprend pas que le i dans Gi fait référence à l'indice d'incrémentation! J'ai essayé également "G"& i &"" mais aucun changement.

    Par ailleurs je ne sais pas si la suite du code est bon.

    Une idée...?

  2. #2
    Membre averti
    Homme Profil pro
    Apprenti
    Inscrit en
    Février 2012
    Messages
    49
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Apprenti
    Secteur : Bâtiment Travaux Publics

    Informations forums :
    Inscription : Février 2012
    Messages : 49
    Par défaut
    Bonjour,
    Qu'es que tu souhaite faire exactement entre tes données et tes cellules à remplir ?

    Mais si non pour pour travailler avec des cellules variables il faut utiliser Cells(1,1) au lieu de Range("A1"). Car la Range("Gi"), il n'y a pas de variable là dedans, et ça désigne la colonne 191 d'excel si je ne m'abuse.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Cells(ici_TaLigne,ici_TaColonne)

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Juillet 2012
    Messages
    53
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2012
    Messages : 53
    Par défaut
    Je souhaite remplir une colonne en fonction de la colonne précédente.
    J'ai essayé avec cells:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    Sub loli()
    Dim b As Range
     
    For i = 3 To 10
    b = Cells(10, i).Value
    If Cells(i,9).Value = "x" Then
    b = "y"
    Else
    b = "z"
    End If
    Next
    End Sub
    Mais ça me dit lors de la ligne "b = cells(10,i).value" que la variable objet est non définie.

  4. #4
    Membre averti
    Homme Profil pro
    Apprenti
    Inscrit en
    Février 2012
    Messages
    49
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Apprenti
    Secteur : Bâtiment Travaux Publics

    Informations forums :
    Inscription : Février 2012
    Messages : 49
    Par défaut
    Si j'ai bien compris ce que tu veux faire, mais j'en doute :p, tu n'a pas besoin d'ajouté des variables.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    Sub loli()
     
        For i = 3 To 10
     
            If Cells(i, 9).Value = "x" Then
                Cells(i, 10).Value = "y"
            Else
                Cells(i, 10).Value = "z"
            End If
        Next
    End Sub

  5. #5
    Membre confirmé
    Profil pro
    Inscrit en
    Octobre 2011
    Messages
    128
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2011
    Messages : 128
    Par défaut
    Bonjour je ne suis pas expert mais je vois un souci alors en attendant que des experts t'aident...

    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
    Dim sh As Worksheet, b As Range, i As Integer
    ' b As Range implique que b est une plage de cellule il faut écrire Set avant de déclarer
     
    Set sh = ThisWorkbook.Worksheets("Feuil1")
     
    For i = 3 To 10
    Set b = sh.Range("G" & i) ' ou alors si  Set b = sh.Cells(i, 7) (i est la ligne de 3 à 10, 7 est la colonne G)
    ' Si tu mets .value , b n'est plus un Range mais un string ou integer ou autre...
    'exemple b = sh.Cells(i, 7).Value est alors tu dois mettre Dim b as integer pour un nombre entier, Dim b as string pour une chaîne de caractère)
     ' là je ne vois pas bien ce que tu veux faire mais déjà faut choisir un bon départ
    If ActiveCell.Offset(, -1).Select = "x" Then
    c = "y"
    Else
    c = "z"
    End If
    Next
    End Sub
    Bon courage

  6. #6
    Expert confirmé
    Avatar de MarcelG
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juillet 2009
    Messages
    3 449
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 67
    Localisation : France, Maine et Loire (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Finance

    Informations forums :
    Inscription : Juillet 2009
    Messages : 3 449
    Billets dans le blog
    7
    Par défaut valeurs cellules
    Bonjour à toutes et tous,

    (Si! Si! Ritorno)

    Comme dit précédemment, tu confonds cellule et valeur.

    Cela dit, restons simple.

    A adapter

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    Sub loli()
    Dim i As Byte
     
    For i = 3 To 10
        With ActiveSheet.Cells(i, 10)
                .Value = IIf(.Offset(0, -1).Value = "x", "y", "z")
        End With
    Next i
     
    End Sub

  7. #7
    Membre averti
    Profil pro
    Inscrit en
    Juillet 2012
    Messages
    53
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2012
    Messages : 53
    Par défaut
    Ca marche !
    Merci à tous pour vos réponses, vous risquez de me revoir bientot

  8. #8
    Expert confirmé
    Avatar de MarcelG
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juillet 2009
    Messages
    3 449
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 67
    Localisation : France, Maine et Loire (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Finance

    Informations forums :
    Inscription : Juillet 2009
    Messages : 3 449
    Billets dans le blog
    7
    Par défaut
    Bonsoir,

    J'ajouterai que s'il est besoin d'affecter une variable à un objet alors il est de bon aloi de la vider en fin de traitement.

    Exemple

    Cette précaution permet de réutiliser la variable en évitant les confusions.

    Hankmoody, n'oublie pas de positionner ton post en "Résolu".

    Bon week-end à tous.

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

Discussions similaires

  1. VBA : boucle for + boucle do problème
    Par antoineDG dans le forum Macros et VBA Excel
    Réponses: 5
    Dernier message: 15/02/2012, 11h19
  2. boucle for, problème !
    Par haricot75 dans le forum Général JavaScript
    Réponses: 1
    Dernier message: 08/02/2007, 17h51
  3. Boucle for, problème aux bords
    Par dword2add dans le forum C
    Réponses: 16
    Dernier message: 21/10/2006, 17h18
  4. Boucle FOR et incrément + 2
    Par davels dans le forum Delphi
    Réponses: 11
    Dernier message: 05/09/2006, 15h02
  5. aide vba boucle for each paramétrée en range
    Par gotlieb dans le forum Macros et VBA Excel
    Réponses: 6
    Dernier message: 27/07/2006, 08h55

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