Macro, variable de colonnes

Bonjour,

Tout d'abord, excellente année 2017 a tous les membres de Excel-Pratique,

Je suis a la recherche d'une solution pour incrémenter une plage variable dans une formule de calcul, malgré mes recherches je n'arrive pas a mettre en pratique les éléments trouvés sur le Net

Le fichier utilisé fait environ 30000 Lignes, le nombre de colonnes est variable,

J'ai donc un soucis pour adapter mon CountIF aux colonnes variables,

Ci dessous le code correspondant, je n'ai pas intégrer la variable colonne, j'aimerais avoir votre avis et comment le mettre en place,

Merci d'avance pour votre retour,

'Variables pour analyse statuts

Dim DerColonne As Integer

Dim Derligne As String

DerColonne = Cells(1, Columns.Count).End(xlToLeft).Column

Derligne = Range("A" & Rows.Count).End(xlUp).Row

'Ajout colonne & 'Analyse des statuts

Range("A1").End(xlToRight).Offset(0, 1).Range("A1").Value = "Analyse Statut"

Range("A1").End(xlToRight).Offset(1, 0).Range("A1").Value = _

"=IF(RC[-1]="""","""",IF(RC[-1]=1,1,IF(RC[-1]=2,2,IF(RC[-1]=3,3,IF(RC[-1]=5,5,IF(RC[-1]=6,6,IF(RC[-1]=7,7,IF(COUNTIF(RC[-17]:RC[-1],5),5,IF(COUNTIF(RC[-17]:RC[-1],6),6,IF(COUNTIF(RC[-17]:RC[-1],7),7,IF(COUNTIF(RC[-17]:RC[-1],""""),5)))))))))))"

Selection.AutoFill Destination:=Range("S2:S" & Derligne)

Bonjour,

Bonne année à toi aussi.

Pour ton problème, ne sachant pas ou doit intervenir ta variable colonne, voici un code qui devrait fonctionner !

Sub testcol()

'Variables pour analyse statuts
Dim DerColonne As Integer
Dim Derligne As String

DerColonne = Cells(1, Columns.Count).End(xlToLeft).Column + 1
Derligne = Range("A" & Rows.Count).End(xlUp).Row

'Ajout colonne & 'Analyse des statuts
Cells(1, DerColonne) = "Analyse Statut"
Cells(2, DerColonne).FormulaR1C1 = _
"=IF(RC[-1]="""","""",IF(RC[-1]=1,1,IF(RC[-1]=2,2,IF(RC[-1]=3,3,IF(RC[-1]=5,5,IF(RC[-1]=6,6,IF(RC[-1]=7,7,IF(COUNTIF(RC[-17]:RC[-1],5),5,IF(COUNTIF(RC[-17]:RC[-1],6),6,IF(COUNTIF(RC[-17]:RC[-1],7),7,IF(COUNTIF(RC[-17]:RC[-1],""""),5)))))))))))"

Cells(2, DerColonne).Select
Selection.AutoFill Destination:=Range(Cells(2, DerColonne), Cells(Derligne, DerColonne)), Type:=xlFillDefault

End Sub

A plus

Bonjour Braters,

Merci pour ton retour,

je surligne en rouge les parties de la formules qui me posent problèmes,

il s'agit du NB.SI, pour lequel, la plage peut varier en fonction du nombre de colonnes de la feuille, mais je n'arrive pas a adapter la formule avec la variable adéquat,

Cells(2, DerColonne).FormulaR1C1 = _

"=IF(RC[-1]="""","""",IF(RC[-1]=1,1,IF(RC[-1]=2,2,IF(RC[-1]=3,3,IF(RC[-1]=5,5,IF(RC[-1]=6,6,IF(RC[-1]=7,7,IF(COUNTIF(RC[-17]:RC[-1],5),5,IF(COUNTIF(RC[-17]:RC[-1],6),6,IF(COUNTIF(RC[-17]:RC[-1],7),7,IF(COUNTIF(RC[-17]:RC[-1],""""),5)))))))))))"

Merci pour votre retour

Et voilà, j'ai ancré la variable !

Cells(2, DerColonne).FormulaR1C1 = _
"=IF(RC[-1]="""","""",IF(RC[-1]=1,1,IF(RC[-1]=2,2,IF(RC[-1]=3,3,IF(RC[-1]=5,5,IF(RC[-1]=6,6,IF(RC[-1]=7,7,IF(COUNTIF(RC[-"&DerColonne-1&"]:RC[-1],5),5,IF(COUNTIF(RC[-"&DerColonne-1&"]:RC[-1],6),6,IF(COUNTIF(RC[-"&DerColonne-1&"]:RC[-1],7),7,IF(COUNTIF(RC[-"&DerColonne-1&"]:RC[-1],""""),5)))))))))))"

Bonjour,

La variable incrémentée ne fonctionne pas.

Le message d'erreur "Erreur de compilation" apparaît !

Help !

Merci de votre retour

Bonjour,

Quelqu'un a t il une solution ?

Pour moi, cela fonctionne ! "Testé et approuvé"

Sub testcol()

'Variables pour analyse statuts
Dim DerColonne As Integer
Dim Derligne As String

DerColonne = Cells(1, Columns.Count).End(xlToLeft).Column + 1
Derligne = Range("A" & Rows.Count).End(xlUp).Row

'Ajout colonne & 'Analyse des statuts
Cells(1, DerColonne) = "Analyse Statut"

Cells(2, DerColonne).FormulaR1C1 = _
"=IF(RC[-1]="""","""",IF(RC[-1]=1,1,IF(RC[-1]=2,2,IF(RC[-1]=3,3,IF(RC[-1]=5,5,IF(RC[-1]=6,6,IF(RC[-1]=7,7,IF(COUNTIF(RC[-" & DerColonne - 1 & "]:RC[-1],5),5,IF(COUNTIF(RC[-" & DerColonne - 1 & "]:RC[-1],6),6,IF(COUNTIF(RC[-" & DerColonne - 1 & "]:RC[-1],7),7,IF(COUNTIF(RC[-" & DerColonne - 1 & "]:RC[-1],""""),5)))))))))))"

Cells(2, DerColonne).Select
Selection.AutoFill Destination:=Range(Cells(2, DerColonne), Cells(Derligne, DerColonne)), Type:=xlFillDefault

End Sub

A plus

Bonjour,

Merci beaucoup,

C'est résolut, cela fonctionne très bien !!

Rechercher des sujets similaires à "macro variable colonnes"