VBA Excel Do...Loop + OFFSET
Bastien06
Messages postés
8
Date d'inscription
Statut
Membre
Dernière intervention
-
eriiic Messages postés 24603 Date d'inscription Statut Contributeur Dernière intervention -
eriiic Messages postés 24603 Date d'inscription Statut Contributeur Dernière intervention -
Bonjour,
Je suis débutant sur VBA. Je suis entrain de travailler sur une petite macro afain d'automatiser de la saisie de données sous Excel 2003.
La problématique est très simple, en function de ce qu'il y a dans une cellule, je dois rentrer une info dans la cellule voisine, et ainsi de suite pour toute une colonne. Les données a rentrer sont répétitives.
J'ai donc saisi une fonction If...then..Else if comme ceci:
If Range("G2") = "STONYKARB" Then Range("H2") = "ARB01"
ElseIf Range("G2") = "IXOPROGLO" Then Range("H2") = "IXOPR"
Une fois une de ces deux conditions remplies, je souhaiterai aller à la ligne, cad à la cellule "G3" et recommencer l'opération jusqu'a la dernière cellule de mon tableau
J'avais donc envisager utiliser la fonction Do...Loop Until
Afin d'aller a la ligne la fonction Offset. La première ebauche de ma macro donnerait cela:
Dim Range As String
Do
If Range("G2") = "STONYKARB" Then Range("H2") = "ARB01"
ElseIf Range("G2") = "IXOPROGLO" Then Range("H2") = "IXOPR"
Range("G2").Offset(1, 0).Activate
Loop Until IsEmpty(Range("G65536").End(xlUp).Select)
End Sub
Je suis peut-etre (surement!) à coté de plaque...j'ai 2-3 livres VBA pr Excel malheureusement je n'y trouve pas mon bonheur.
En tout cas si jamais vous avez une indication/conseil à me donner ca serait top!!
Merci par avance!
Bastien
Je suis débutant sur VBA. Je suis entrain de travailler sur une petite macro afain d'automatiser de la saisie de données sous Excel 2003.
La problématique est très simple, en function de ce qu'il y a dans une cellule, je dois rentrer une info dans la cellule voisine, et ainsi de suite pour toute une colonne. Les données a rentrer sont répétitives.
J'ai donc saisi une fonction If...then..Else if comme ceci:
If Range("G2") = "STONYKARB" Then Range("H2") = "ARB01"
ElseIf Range("G2") = "IXOPROGLO" Then Range("H2") = "IXOPR"
Une fois une de ces deux conditions remplies, je souhaiterai aller à la ligne, cad à la cellule "G3" et recommencer l'opération jusqu'a la dernière cellule de mon tableau
J'avais donc envisager utiliser la fonction Do...Loop Until
Afin d'aller a la ligne la fonction Offset. La première ebauche de ma macro donnerait cela:
Dim Range As String
Do
If Range("G2") = "STONYKARB" Then Range("H2") = "ARB01"
ElseIf Range("G2") = "IXOPROGLO" Then Range("H2") = "IXOPR"
Range("G2").Offset(1, 0).Activate
Loop Until IsEmpty(Range("G65536").End(xlUp).Select)
End Sub
Je suis peut-etre (surement!) à coté de plaque...j'ai 2-3 livres VBA pr Excel malheureusement je n'y trouve pas mon bonheur.
En tout cas si jamais vous avez une indication/conseil à me donner ca serait top!!
Merci par avance!
Bastien
A voir également:
- VBA Excel Do...Loop + OFFSET
- Liste déroulante excel - Guide
- Word et excel gratuit - Guide
- Déplacer colonne excel - Guide
- Si ou excel - Guide
- Excel compter cellule couleur sans vba - Guide
6 réponses
Bonjour,
Ce n'est pas la syntaxe que j'utilise habituellement mais voici un code inspiré de ton exemple qui doit fonctionner :
A+
Ce n'est pas la syntaxe que j'utilise habituellement mais voici un code inspiré de ton exemple qui doit fonctionner :
Range("G2").Select Do If Selection.Value = "STONYKARB" Then Selection.Offset(0, 1).Value = "ARB01" ElseIf Selection.Value = "IXOPROGLO" Then Selection.Offset(0, 1).Value = "IXOPR" End If Selection.Offset(1, 0).Select Loop Until IsEmpty(Selection)
A+
Re Bonjour,
Voila pour info la syntaxe que j'utilise plus volontiers :
Celà donne rigoureusement le même résultat
Voila pour info la syntaxe que j'utilise plus volontiers :
Dim ILIG As Integer For ILIG = 2 To Range("G65536").End(xlUp).Row If Cells(ILIG, 7) = "STONYKARB" Then Cells(ILIG, 8) = "ARB01" ElseIf Cells(ILIG, 7) = "IXOPROGLO" Then Cells(ILIG, 8) = "IXOPR" End If Next ILIG
Celà donne rigoureusement le même résultat
Je reviens encore pour les puristes d'Excel qui ne sont pas VBA (liens), ils se reconnaîtront !
Il existe bien sur une solution simple avec une formule que voici :
Il suffit de mettre cette formule en H2 puis de la recopier jusqu'a la fin de la liste...
Voilà (c'était pour le coté didactique !)
A+
Il existe bien sur une solution simple avec une formule que voici :
=SI(G2="STONYKARB";"ARB01";SI(G2="IXOPROGLO";"IXOPR";""))
Il suffit de mettre cette formule en H2 puis de la recopier jusqu'a la fin de la liste...
Voilà (c'était pour le coté didactique !)
A+
Bonsoir!
Merci bcp pr votre aide! Je me rends compte que dans l'idée jétais pas si loin du compte mais il est tjs interessant et instructif d'avoir un avis exterieur!!
Encore merci et bonne soirée!
Merci bcp pr votre aide! Je me rends compte que dans l'idée jétais pas si loin du compte mais il est tjs interessant et instructif d'avoir un avis exterieur!!
Encore merci et bonne soirée!
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
Pilas,
Juste pour en revenir a la synthaxe que tu utilises,
le terme ILIG est une chaine de caractere qui t'est propre ou elle veut réellement dire qqch?
Je me rends compte que je maitrise mal la définition des variables mais bon j'apprends petit a petit!
Merci!
Bastien
Juste pour en revenir a la synthaxe que tu utilises,
le terme ILIG est une chaine de caractere qui t'est propre ou elle veut réellement dire qqch?
Je me rends compte que je maitrise mal la définition des variables mais bon j'apprends petit a petit!
Merci!
Bastien
Bonsoir,
ILIG c'est une variable que je déclare comme INTEGER. C'est une variable quelconque mais j'ai personnellement gardée une vielle habitude je mets toujours en majuscule (car on les distingue tout de suite des mots clé du langage) mes propres variables avec une première lettre qui donne le type.
A+
ILIG c'est une variable que je déclare comme INTEGER. C'est une variable quelconque mais j'ai personnellement gardée une vielle habitude je mets toujours en majuscule (car on les distingue tout de suite des mots clé du langage) mes propres variables avec une première lettre qui donne le type.
A+