Erreur d'exécution "91"

Bonsoir,

Je rencontre un problème assez gênant dans mon code, que je n'arrive pas à maîtriser étant débutant dans la programmation VBA.

capture d ecran 2020 07 02 a 22 21 29

Le message d'erreur m'indique "variable de bloc ou variable d'objet with non définie".

Je vous remercie d'avance pour votre aide :)

Bonjour Makovitch

Les variables sont déclarée, elles peuvent être utilisée, soit en tout premier on attribue une valeur à la variable et ensuite on l'utilise dans des formule.

Dans votre cas Cell1 est déclaré, mais il n'y a RIEN dedans on ne peut donc pas l'utiliser tant que vous n'y aurez pas glissé une cellule au moins

Qui plus est l'allignement Cell1.Value est (si cell1 représente une seule cellule) le contenu de la cellule, écrire en suivant .Colonne1.select est incohérent.

Dites nous ce que vous voulez faire avec cette ligne

Merci

Je te remercie pour ta réactivité Toukoul !

Je voulais déclarer une variable (cell1) qui correspond à chaque cellule de la colonne1 pour pouvoir tester ensuite avec les cellules de la colonne2 (cell2), les valeurs de cell2 qui sont supérieures à cell1.

j'aimerais colorer, par la suite, en rouge les cellules de la colonne2 qui sont supérieurs en valeur aux cellules de la colonne 1

Makovitch

Pour comparer chaque cellule de la colonne 1 à toutes les cellules de la colonne 2 :

il faut imbriquer deux boucles dans l'ordre qui vous convient

For each Cell2 in Colonne 2

For each Cell1 in Colonne 1

If Cell1.value<Cell2.value then ............

Pour comparer chaque cellule de la colonne 1 à son vis à vis dans la colonne 2 :

Après avoir vérifié que les deux COLONNES sont de longueurs identiques :

For x=1 to (Longueur des colonnes)

If colonne1(x).value<colonne2(X).value then ...............

next X

Bonsoir

Toukoul

La boucle for fonctionne bien merci, néanmoins les cellules ne passe pas en rouge. Savez-vous pourquoi?

If colonne1(i).Value < colonne2(i).Value Then

ActiveCell.Interior.Color = vbRed

ActiveCell.Offset(1, 0).Select

Else: ActiveCell.Offset(1, 0).Select

End If

encore merci!

Bonjour Makovitch

Activecell := Cellule active

il faut donc l'activer avant ex:

sheets(1).Range("B2").Activate

Il faut que la feuille qui contient la cellule soit aussi active, cela donnerait :
With Sheets("Feuil1")
   .Activate
   .Cells(rownum, colnum).Activate
 End With

Cdt

Bonjour makovitch, Toukoul, le forum,

Pas sûr d'avoir bien compris la demande,

comparer chaque cellule de la colonne 1 à toutes les cellules de la colonne 2 :

colorer, par la suite, en rouge les cellules de la colonne2 qui sont supérieurs en valeur aux cellules de la colonne 1

2 interprétations possibles:

  1. Si valeur cellule colonne F > valeur de toutes les cellules de colonne L (donc au max de la colonne L)
  2. Si pour chaque ligne, la valeur de la cellule de la colonne F est > la valeur de la cellule correspondante en colonne L
5classeur1.xlsm (19.46 Ko)

Mais je suis peut-être à côté de la plaque...

Cordialement,

Bonjour Makovitch, Toukoul ,Xorsankukai,

Appliquer une Mise en Forme Conditionnelle. Cela devrait seulement suffire.

Voir le fichier repris. Dans le menu général d'Excel choisir Accueil puis MFC et gérer les règles.

Salut X Cellus,

Appliquer une Mise en Forme Conditionnelle. Cela devrait seulement suffire.

J'avais également envisagé cette solution, mais le demandeur ayant posté une macro, j'en suis resté là ( et n'ayant pas encore obtenu de réponse....).

Au moins, il n'a que l'embarras du choix,

Amicalement,

A nouveau,

@Xorsankukai

Vu que l'ensemble des solutions proposait du code j'ai choisi pour une fois la facilité.

La MFC permettant ici de s'affranchir de coder. Après les besoins peuvent évoluer à l'avenir et VBA deviendra plus nécessaire...

Bonne soirée.

Merci à tous de votre aide !

A nouveau,

Ne pas oublier de clore le sujet si les aides apportées conviennent.

Rechercher des sujets similaires à "erreur execution"