Modification compteur colonne
Bonjour,
Dans le cadre de suivis de longues durées, une macro avait été créée avec un compteur de colonne utilisant la fonction Chr et les codes de 65 à 90 (alphabet) pour extraire les données de plusieurs feuilles à partir d'une date renseignée sur un autre onglet (1 date - 1 colonne).
Le problème est que j'ai à présent un suivi qui arrive sur la colonne AA et la macro ne fonctionne plus.
Est-ce qu'il est possible de modifier la macro avec un compteur colonne "infini" ou trouver directement la colonne abritant la date recherchée ?
Ci-dessous le programme pour une feuille, le code se répète à l'identique pour les autres piézo.
Le compteur a substituer concerne les 2 lignes "For code = 65 to 90" et " colonne = Chr (code)".
Sub Tableau()
'
' Macro1 Macro
' Macro enregistrée le 06/01/2011
'
Dim Dateanalyse As Date
Dim i, code, test As Integer
Dateanalyse = Sheets("Synthèse dernière tounée").Range("A2").Value
'Piézo Rognac
test = 0
For code = 65 To 90
colonne = Chr(code)
If Sheets("Piézo Rognac").Range(colonne & "2").Value = Dateanalyse Then
test = 1
For i = 4 To 8
Sheets("Synthèse dernière tounée").Range("B" & i).Value = Sheets("Piézo Rognac").Range(colonne & i).Value
Next i
i = 10
Sheets("Synthèse dernière tounée").Range("B" & i).Value = Sheets("Piézo Rognac").Range(colonne & i).Value
For i = 12 To 30
Sheets("Synthèse dernière tounée").Range("B" & i).Value = Sheets("Piézo Rognac").Range(colonne & i).Value
Next i
For i = 32 To 36
Sheets("Synthèse dernière tounée").Range("B" & i).Value = Sheets("Piézo Rognac").Range(colonne & i).Value
Next i
Else
If test = 0 Then
For i = 4 To 8
Sheets("Synthèse dernière tounée").Range("B" & i).Value = "-"
Next i
i = 10
Sheets("Synthèse dernière tounée").Range("B" & i).Value = "-"
For i = 12 To 30
Sheets("Synthèse dernière tounée").Range("B" & i).Value = "-"
Next i
For i = 32 To 36
Sheets("Synthèse dernière tounée").Range("B" & i).Value = "-"
Next i
Else
End If
End If
Next codeJe comprends le code mais ai toujours du mal à le créer, donc modifier l'existant de quelqu'un d'autre sans tout casser...
Merci de votre aide :)
Bonjour,
tu n'es pas obligé de t'embêter avec les lettres des colonnes :
Dim colonne As Long
For colonne = 1 To 300
If Sheets("Piézo Rognac").Cells(2, colonne).Value = Dateanalyse Then
'...
End If
'...
Next colonneet changer tous tes .Range en .Cells(ligne, colonne)
eric
Salut Ellundril,
Salut Eriiic,
sur le fond, Eric a raison
For code = 65 To 90
colonne = fctCol(code)La fonction.
Public Function fctCol(ByVal iCol%) As String
'
fctCol = Split(Columns(iCol).Address(ColumnAbsolute:=False), ":")(1)
'
End Function
A+
ça fonctionne nickel ! Et avec 300 colonnes, j'aurais 150 ans la prochaine fois qu'il faudra modifier donc parfait
Ok, je ne connaissais pas la fonction colonne en code seulement celle que l'on tape directement dans le tableur, ça me sera bien utile aussi.
Merci à vous !
ce qu'il faut retenir c'est Cells(ligne, colonne) qui est une autre syntaxe pour désigner une cellule.
Mais attention que ça s'applique à l'objet mis devant :
Dim pl As Range
MsgBox Cells(3, 2).Address
Set pl = Range("D5:G15")
MsgBox pl.Cells(3, 2).AddressLe 1er, sans précision s'applique à toute la feuille et te retourne donc $B$3.
Le 2nd s'applique à la plage "D5:G15" dont la 3e ligne, 2e colonne est $E$7
eric