Integrer une boucle dans cette macro pour decalage colonne.

yves03

XLDnaute Occasionnel
Bonjour à tous,

J'utilise cette macro qui me permet de colorer en bleu 9 cellules de la colonne active, j'aimerais pouvoir repeter cette operation plusieurs fois en indiquant le nombre a l'aide d'un textbox.
J'ai essaye d'inclure une boucle pour pouvoir decaler a chaque fois de 3 colonnes sur la droite et executer la macro pour colorier les cellules, mais ça ne fonctionne pas.
Si vous pouviez m'indiquez une piste à suivre.
Merci d''avance

Code:
If ComboBox1.Value = "CP" And ComboBox3.Value = "Journée" Then
    x = ActiveCell.Row
    y = ActiveCell.Column
                   Cells(x - 1, y + 0).ClearComments
             Range(Cells(x - 1, y), Cells(x + 1, y + 2)).Value = ""
             Range(Cells(x - 1, y), Cells(x + 1, y + 2)).Interior.ColorIndex = 5
                   Cells(x - 0, y + 1).Value = Sheets("BDD").Cells(ComboBox1.ListIndex + 2, 2)
                   
                 If TextBox2.Text = "" Then
                        Unload Saisie
                        Exit Sub
                   Else
                      Cells(x - 0, y + 0).AddComment.Text Text:=TextBox2.Text
                 End If
     Unload Saisie
     
     ComboBox3.Clear
                 For n = 2 To Sheets("BDD").Range("A65536").End(xlUp).Row
                          ComboBox3.AddItem Sheets("BDD").Range("K" & n)
                  Next n
End If
 

Excel-lent

XLDnaute Barbatruc
Re : Integrer une boucle dans cette macro pour decalage colonne.

Bonjour Yves03,

Yves03 à dit:
j'aimerais pouvoir repeter cette operation plusieurs fois en indiquant le nombre a l'aide d'un textbox

Code:
[COLOR="Blue"][B]For Boucle = 1 To CByte([U]TextBox[/U])[/B][/COLOR]
  If ComboBox1.Value = "CP" And ComboBox3.Value = "Journée" Then
      x = ActiveCell.Row
      y = ActiveCell.Column
      
       Cells(x - 1, y + 0).ClearComments
       Range(Cells(x - 1, y), Cells(x + 1, y + 2)).Value = ""
       Range(Cells(x - 1, y), Cells(x + 1, y + 2)).Interior.ColorIndex = 5
       Cells(x - 0, y + 1).Value = Sheets("BDD").Cells(ComboBox1.ListIndex + 2, 2)
                   
      If TextBox2.Text = "" Then
             Unload Saisie
             Exit Sub
      Else
             Cells(x - 0, y + 0).AddComment.Text Text:=TextBox2.Text
      End If

      Unload Saisie
     
      ComboBox3.Clear
          For n = 2 To Sheets("BDD").Range("A65536").End(xlUp).Row
                ComboBox3.AddItem Sheets("BDD").Range("K" & n)
          Next n

  End If
[COLOR="Blue"][B]Next Boucle[/B][/COLOR]

Bleu : parti rajouté

TextBox à remplacer par le nom de ta TextBox (cf dans propriété : (name))!

Ne pouvant le tester, je te laisse le soin de le faire et me dire si ça te convient?

Bon dimanche
 
Dernière édition:

yves03

XLDnaute Occasionnel
Re : Integrer une boucle dans cette macro pour decalage colonne.

Bonjour Excel-lent,
Merci de ta reponse, mais ça ne fonctionne pas, si je met par exemple 2 dans ma textbox , j'ai toujours que les 9 premieres cellules en bleu, en fait il faudrait a chaque boucle decale la cellule active de 3 cellules vers la droite;
enfin je crois !!
 

Excel-lent

XLDnaute Barbatruc
Re : Integrer une boucle dans cette macro pour decalage colonne.

Salut Yves03,

En effet, comme indiqué, le code que je t'ai rajouté te permet juste de répéter ton code n fois!

Donc si tu n'as pas rajouté le décalage, il fait n fois exactement la même chose.

Le décalage est à rajouter ;)

Aller... un petit coup de main :

Yves03 à dit:
decale la cellule active de 3 cellules vers la droite

Code:
[COLOR="DarkSlateGray"][B]x = ActiveCell.Row
y = ActiveCell.Column[/B][/COLOR]

For Boucle = 1 To CByte(TextBox)
  If ComboBox1.Value = "CP" And ComboBox3.Value = "Journée" Then
      
       Cells(x - 1, y + 0).ClearComments
       Range(Cells(x - 1, y), Cells(x + 1, y + 2)).Value = ""
       Range(Cells(x - 1, y), Cells(x + 1, y + 2)).Interior.ColorIndex = 5
       Cells(x - 0, y + 1).Value = Sheets("BDD").Cells(ComboBox1.ListIndex + 2, 2)
                   
      If TextBox2.Text = "" Then
             Unload Saisie
             Exit Sub
      Else
             Cells(x - 0, y + 0).AddComment.Text Text:=TextBox2.Text
      End If

      Unload Saisie
     
      ComboBox3.Clear
          For n = 2 To Sheets("BDD").Range("A65536").End(xlUp).Row
                ComboBox3.AddItem Sheets("BDD").Range("K" & n)
          Next n

  End If
[COLOR="Red"][B]y = y + 3[/B][/COLOR]
Next Boucle

J'ai déplacé :
x = ActiveCell.Row
y = ActiveCell.Column

à l'extérieur de la boucle

J'ai rajouté :
y = y + 3
à l'intérieur de la boucle, pour pouvoir décaler de 3 pas (et puis s'en vont :) ) vers la droite

Bon dimanche à toi
 

yves03

XLDnaute Occasionnel
Re : Integrer une boucle dans cette macro pour decalage colonne.

Salut Yves03,

En effet, comme indiqué, le code que je t'ai rajouté te permet juste de répéter ton code n fois!

Donc si tu n'as pas rajouté le décalage, il fait n fois exactement la même chose.

Le décalage est à rajouter ;)

Aller... un petit coup de main :



Code:
[COLOR="DarkSlateGray"][B]x = ActiveCell.Row
y = ActiveCell.Column[/B][/COLOR]


  If ComboBox1.Value = "CP" And ComboBox3.Value = "Journée" Then
      [COLOR="Red"]For Boucle = 1 To CByte(TextBox)[/COLOR]
       Cells(x - 1, y + 0).ClearComments
       Range(Cells(x - 1, y), Cells(x + 1, y + 2)).Value = ""
       Range(Cells(x - 1, y), Cells(x + 1, y + 2)).Interior.ColorIndex = 5
       Cells(x - 0, y + 1).Value = Sheets("BDD").Cells(ComboBox1.ListIndex + 2, 2)
             [COLOR="Red"][B]y = y + 3[/B][/COLOR]
Next Boucle
If TextBox2.Text = "" Then
Unload Saisie
Exit Sub
Else
Cells(x - 0, y + 0).AddComment.Text Text:=TextBox2.Text
End If

Unload Saisie

ComboBox3.Clear
For n = 2 To Sheets("BDD").Range("A65536").End(xlUp).Row
ComboBox3.AddItem Sheets("BDD").Range("K" & n)
Next n

End If


J'ai déplacé :
x = ActiveCell.Row
y = ActiveCell.Column

à l'extérieur de la boucle

J'ai rajouté :
y = y + 3
à l'intérieur de la boucle, pour pouvoir décaler de 3 pas (et puis s'en vont :) ) vers la droite

Bon dimanche à toi

j'ai deplace la boucle à l'interieur de la macro car ça ne fonctionnait pas.
Merci de ton aide encore une fois;
Je crois que j'aurais encore besoin de ton aide;
Merci
 

Carl Itov

XLDnaute Nouveau
Re : Integrer une boucle dans cette macro pour decalage colonne.

Bonjour , je suis novice et je cherche de l aide. je pense que le problème d'Yves03 et le mien pourraient être de même nature.
Voila, j'aimerais rapatrier le contenu de pages Web a partir d'une liste d'URL et ce avec un intervalle de 5 colonnes.

j'ai un bout de macro qui ( je pense ) marche mais elle reecrit a chaque fois sur la meme colonne.

A savoir que j'ai mis ma liste d'URL dans la feuil2 a partir de B5 et que cette liste peux evoluer.


je ne sais pas si je me suis bien fait comprendre mais bon..



Sub Datas()
Dim i As Long, ws As Worksheet
Dim c As Range, décalage As String

Set ws = Worksheets("Feuil2")

Worksheets("Feuil1").Select

derlig = ws.[B65536].End(xlUp).Row
For i = 5 To derlig

With Selection.QueryTable
.Connection = "URL;" & ws.Cells(i, 2).Value
.FieldNames = True
.RowNumbers = False
.FillAdjacentFormulas = False
.PreserveFormatting = True
.RefreshOnFileOpen = False
.BackgroundQuery = False
.RefreshStyle = xlInsertDeleteCells
.SavePassword = False
.SaveData = True
.AdjustColumnWidth = False
.RefreshPeriod = 0
.WebSelectionType = xlEntirePage
.WebFormatting = xlWebFormattingNone
.WebPreFormattedTextToColumns = True
.WebConsecutiveDelimitersAsOne = True
.WebSingleBlockTextImport = False
.WebDisableDateRecognition = False
.WebDisableRedirections = False
.Refresh BackgroundQuery:=False

End With

Next i

End Sub



Merci beaucoup pour votre aide
 

Statistiques des forums

Discussions
312 322
Messages
2 087 275
Membres
103 504
dernier inscrit
Marie28